我正在寻找一些关于如何在 ANSI C 中使用正则表达式的简单示例和最佳实践。man regex.h并没有提供太多帮助。
man regex.h
正则表达式实际上不是 ANSI C 的一部分。听起来您可能在谈论 POSIX 正则表达式库,它与大多数(全部?)*nixes 一起提供。这是在 C 中使用 POSIX 正则表达式的示例(基于this):
#include <regex.h> regex_t regex; int reti; char msgbuf[100]; /* Compile regular expression */ reti = regcomp(®ex, "^a[[:alnum:]]", 0); if (reti) { fprintf(stderr, "Could not compile regex\n"); exit(1); } /* Execute regular expression */ reti = regexec(®ex, "abc", 0, NULL, 0); if (!reti) { puts("Match"); } else if (reti == REG_NOMATCH) { puts("No match"); } else { regerror(reti, ®ex, msgbuf, sizeof(msgbuf)); fprintf(stderr, "Regex match failed: %s\n", msgbuf); exit(1); } /* Free memory allocated to the pattern buffer by regcomp() */ regfree(®ex);
或者,您可能想查看PCRE,这是一个 C 语言中与 Perl 兼容的正则表达式库。Perl 语法与 Java、Python 和许多其他语言中使用的语法几乎相同。POSIX 语法是 , , 等使用grep的sed语法vi。
grep
sed
vi