在C#或PHP中使用正则表达式对我来说非常容易.但是目前我需要在C中使用正则表达式.而且,我似乎并不完全理解regcomp或regexec的用法.这绝对是因为我缺乏C语言的经验.
任何帮助和示例将不胜感激!
使用PCRE库.示例包含在源中,demo/
目录中.这是一个直接链接pcredemo.c
.
当您指示regex(3)
功能时,这可能会让您开始.以下是一个与其参数相匹配的简单程序.但是,如果你对C比较陌生,那么你会想要慢慢使用regex(3)
,因为你将使用指针和数组以及 - regmatch_t
提供补偿和狮子,老虎和熊.;)
$ ./regexec '[[:digit:]]' 56789 alpha " " foo12bar matched: 56789 matched: foo12bar $ ./regexec '[[:digit:]](foo' error: Unmatched ( or \( $ ./regexec '[' error: Invalid regular expression
......和来源:
#include#include #include int main(int argc, char **argv) { int r; regex_t reg; ++argv; /* Danger! */ if (r = regcomp(®, *argv, REG_NOSUB|REG_EXTENDED)) { char errbuf[1024]; regerror(r, ®, errbuf, sizeof(errbuf)); printf("error: %s\n", errbuf); return 1; } for (++argv; *argv; ++argv) { if (regexec(®, *argv, 0, NULL, 0) == REG_NOMATCH) continue; printf("matched: %s\n", *argv); } return 0; }