1
这是我第一次在C中使用正则表达式,并且遇到了一些麻烦。我试图复制在sed
中使用的语法,即s/findthisstring/replacewiththis/g
,其中findthisstring
必须存在,并且replacewiththis
不存在。Posix正则表达式不能在C中工作
我想出了正则表达式是^s/(.*)/(.*)/g$
这是在我的代码
int verifyPattern(char *pattern) {
regex_t regex;
int reti = regcomp(®ex, "^s/(.*)/(.*)/g$", 0);
if (reti) {
fprintf(stderr, "Could not compile regex\n");
exit(1);
}
reti = regexec(®ex, pattern, 0, NULL, 0);
if (!reti) {
puts("Match");
} else if (reti == REG_NOMATCH) {
puts("No match");
} else {
puts("Regex error");
}
return 1;
}
我相信是搞乱的部分是.+
。如果我用.*
替换它,一切都很好。任何人都知道这个工作?
谢谢!
请提供一个测试用例来证明什么行不通。 –
你为什么要逃避正则表达式中的正斜杠。 '/'不是任何正则表达式引擎中的元字符。另外,找到嵌入的正则表达式并不是那么简单,除非你知道如何解析正则表达式。 – sln
尝试'const char * str_regex =“^ s /((\\\\。| [^ \\\\\ /] +)/)。(*)/ g $”;' –