求助,关于 C 的正则表达式:
用 POSIX 的 regex 写了一个正则表达式:^[^\()[]{}",';#\|\s^\d{1,}$]+, 然后在程序里用 const char *pattern = "^[^\\\\\\(\\)\\[\\]\\{\\}\",'
;#\|\s^\d{1,}$]+",
匹配“ define a '(11 2.2 233 "abcd" "123abc"))”字符串中的 define,但是匹配不到,而我在一些正则表达式测试网站,用同样一套 pattern 和 string,是可以匹配到 define 这个单词的。
代码片段如下:
const char *pattern = "^[^\\\\\\(\\)\\[\\]\\{\\}\",'`;#\\|\\s^\\d{1,}$]+";
regex_t reg;
regmatch_t match[1];
int result = regcomp(®, pattern, REG_ENHANCED | REG_EXTENDED);
if (result != 0)
{
perror("Could not compile regex");
exit(EXIT_FAILURE);
}
int status = regexec(®, &line[i], 1, match, 0);
if (status == REG_NOMATCH)
{
// no match
regfree(®);
}
else if (status == 0)
{
// matched
// do something here
}
else
{
perror("Regex in exceptional situations, match identifier failed");
exit(EXIT_FAILURE);
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.