regcomp 子例程
用途
将指定的基本或扩展正则表达式编译为可执行字符串。
库
标准 C 库 (libc. a)
语法
描述
regcomp 子例程编译由 Pattern 参数指定的基本或扩展正则表达式,并将输出放在 Preg 参数指向的结构中。
参数
| 项 | 描述 |
|---|---|
| 普雷格 | 指定用于接收 regcomp 子例程的编译输出的结构。 |
| 模式 | 包含要由 regcomp 子例程编译的基本或扩展正则表达式。 模式 参数的缺省正则表达式类型为基本的正则表达式。 应用程序可以使用 |
| CFlags | 包含 regcomp 子例程的 0 或更多标志的按位包含 OR。 这些标志在 regex.h 文件中定义:
|
返回值
如果成功, regcomp 子例程将返回值 0。 否则,它将返回另一个指示失败类型的值,并且未定义 Preg 参数的内容。
错误代码
在错误情况下,可以将错误代码的以下宏名称写入 errno 全局变量:
| 项 | 描述 |
|---|---|
REG_BADPAT |
指示无效的基本正则表达式或扩展正则表达式。 |
REG_ECOLLATE |
指示被引用的整理元素无效。 |
REG_ECTYPE |
指示无效的字符类型引用。 |
REG_EESCAPE |
指示模式中的尾部 \ 。 |
REG_ESUBREG |
指示 \digit 中的数字无效或出错。 |
REG_EBRACK |
指示 [] 不平衡。 |
REG_EPAREN |
指示 \(\) 或 () 不平衡。 |
REG_EBRACE |
指示 \{\} 不平衡。 |
REG_BADBR |
指示 \{\} 的内容不可用: 不是数字,数字过大,超过两个数字或第一个数字大于秒。 |
REG_ERANGE |
指示范围表达式中不可用的端点。 |
REG_ESPACE |
指示内存不足。 |
REG_BADRPT |
指示? (问号) , * (星号) 或 + (加号) 前面没有有效的基本正则表达式或扩展正则表达式。 |
如果 regcomp 子例程检测到非法的基本或扩展正则表达式,那么它可以返回 REG_BADPAT 错误代码或另一个更精确地描述错误的错误代码。
示例
以下示例说明了如何将字符串 (在 串 参数中指定) 与扩展正则表达式 (在 模式 参数中指定) 进行匹配:
#include <sys/types.h>
#include <regex.h>
int
match(char *string, char *pattern)
{
int status;
regex_t re;
if (regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB) != 0) {
return(0) ; /* report error */
}
status = regexec(&re, string, (size_t) 0, NULL, 0);
regfree(&re);
if (status != 0) {
return(0) ; /* report error */
}
return(1);
}在前面的示例中,错误被视为不匹配。 当没有匹配或错误时,调用进程可以通过调用 regerror 子例程来获取详细信息。