小编典典

C中的正则表达式:示例?

all

我正在寻找一些关于如何在 ANSI C 中使用正则表达式的简单示例和最佳实践。man regex.h并没有提供太多帮助。


阅读 77

收藏
2022-07-12

共1个答案

小编典典

正则表达式实际上不是 ANSI C 的一部分。听起来您可能在谈论 POSIX 正则表达式库,它与大多数(全部?)*nixes 一起提供。这是在 C 中使用
POSIX
正则表达式的示例(基于this):

#include <regex.h>        
regex_t regex;
int reti;
char msgbuf[100];

/* Compile regular expression */
reti = regcomp(&regex, "^a[[:alnum:]]", 0);
if (reti) {
    fprintf(stderr, "Could not compile regex\n");
    exit(1);
}

/* Execute regular expression */
reti = regexec(&regex, "abc", 0, NULL, 0);
if (!reti) {
    puts("Match");
}
else if (reti == REG_NOMATCH) {
    puts("No match");
}
else {
    regerror(reti, &regex, msgbuf, sizeof(msgbuf));
    fprintf(stderr, "Regex match failed: %s\n", msgbuf);
    exit(1);
}

/* Free memory allocated to the pattern buffer by regcomp() */
regfree(&regex);

或者,您可能想查看PCRE,这是一个 C 语言中与 Perl 兼容的正则表达式库。Perl 语法与
Java、Python 和许多其他语言中使用的语法几乎相同。POSIX 语法是 , , 等使用grepsed语法vi

2022-07-12