我正在尝试在C中实现正则表达式,我有以下代码来查找其中包含'*'的所有字符串,
regex_t regex;
regcomp(®ex, "^[A-Za-z0-9\*]+$", 0);
if (!regexec(®ex, args[j], 0, NULL, 0)) {
printf("string found");
}
这是正确的方法吗?我的代码与包含'*'的字符串不匹配。任何有关这方面的帮助将不胜感激。
答案 0 :(得分:4)
在C ++中,需要转义字符\
。因此,如果您想要转义正则表达式*
,则需要执行\\*
。这应该解决问题。每当你在字符串中使用反斜杠时,你需要像那样逃避它。如果您需要使用正则表达式在字符串中找到它,则需要使用\\\\
进行搜索。
答案 1 :(得分:1)
除了Pawel的回答,在C ++ 11中你可以使用原始字符串文字来简化:
regcomp(®ex, R"(^[A-Za-z0-9\*]+$)", 0);
(如果你想在正则表达式中使用()
字符,你当然必须选择另一个分隔符。)