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 的描述字符串为:
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.'
**********************************************************/
}