regerror ()- 正規表示式的傳回錯誤訊息
格式
#include <regex.h>
size_t regerror(int errcode, const regex_t *preg,
char *errbuf, size_t errbuf_size);語言層次
XPG4
安全執行緒
是
區分語言環境
此函數的行為可能受現行語言環境的 LC_CTYPE 及 LC_COLLATE 種類影響。 在編譯指令上指定 LOCALETYPE (*CLD) 時,無法使用此函數。 如需相關資訊,請參閱 瞭解 CCSID 及語言環境。
說明
regerror() 函數會尋找正規表示式 preg的錯誤碼 errcode 的說明。 errcode 的說明已指派給 errbuf。 errbuf_size 值指定可儲存的訊息大小上限 (errbuf 的大小)。 errcode 的說明字串如下:
| 錯誤碼 | 說明字串 |
|---|---|
| REG_NOMATCH | regexec() 找不到相符項。 |
| REG_BADPAT | 正規表示式無效。 |
| REG_ECOLLATE | 參考的對照元素無效。 |
| REG_ECTYPE | 參考的字元類別類型無效。 |
| REG_EESCAPE | 正規表示式中的最後一個字元是 \。 |
| REG_ESUBREG | \digit 中的數字無效或錯誤。 |
| REG_EBRACK | []不平衡。 |
| REG_EPAREN | \ (\) 或 () 不平衡。 |
| REG_EBRACE | \{ \}不平衡。 |
| REG_BADBR | \{ and \} 之間的表示式無效。 |
| REG_ERANGE | 範圍表示式中的端點無效。 |
| REG_ESPACE | 記憶體不足。 |
| REG_BADRPT | ?、* 或 + 前面沒有有效的正規表示式。 |
| REG_ECHAR | 多位元組字元無效。 |
| REG_EBOL | 曲折符號錨點不在正規表示式的開頭。 |
| REG_EEOL | $錨點不在正規表示式的結尾。 |
| REG_ECOMP | regcomp() 呼叫期間發生不明錯誤。 |
| REG_EEXEC | regexec() 呼叫期間發生不明錯誤。 |
回覆值
regerror() 函數會傳回保留說明錯誤狀況之字串所需的緩衝區大小。 errno 的值可以設為 ECONVERT (轉換錯誤)。
範例
此範例會編譯無效的正規表示式,並使用
regerror() 函數列印錯誤訊息。#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
regex_t preg;
char *pattern = "a[missing.bracket";
int rc;
char buffer[100];
if (0 != (rc = regcomp(&preg, pattern, REG_EXTENDED))) {
regerror(rc, &preg, buffer, 100);
printf("regcomp() failed with '%s'\n", buffer);
exit(EXIT_FAILURE);
}
return 0;
/**********************************************************
The output should be similar to:
regcomp() failed with '[] imbalance.'
**********************************************************/
}