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 的說明已指派給 errbuferrbuf_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.'
 **********************************************************/
}

相關資訊