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 的描述字符串为:

errCode 描述字符串
REG_NOMATCH regexec() 找不到匹配项。
REG_BADPAT 无效正则表达式。
REG_ECOLLATE 引用了无效整理元素。
REG_ECTYPE 引用了无效字符类类型。
REG_EESCAPE 正则表达式中的最后一个字符是 \。
REG_ESUBREG 数字中的 \n 数字无效或错误。
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.'
 **********************************************************/
}

相关信息