如何在正则表达式中匹配'*'

时间:2013-11-28 02:57:50

标签: c++ c regex operating-system

我正在尝试在C中实现正则表达式,我有以下代码来查找其中包含'*'的所有字符串,

regex_t regex;
regcomp(&regex, "^[A-Za-z0-9\*]+$", 0);

if (!regexec(&regex, args[j], 0, NULL, 0)) {
    printf("string found");
}

这是正确的方法吗?我的代码与包含'*'的字符串不匹配。任何有关这方面的帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

在C ++中,需要转义字符\。因此,如果您想要转义正则表达式*,则需要执行\\*。这应该解决问题。每当你在字符串中使用反斜杠时,你需要像那样逃避它。如果您需要使用正则表达式在字符串中找到它,则需要使用\\\\进行搜索。

答案 1 :(得分:1)

除了Pawel的回答,在C ++ 11中你可以使用原始字符串文字来简化:

regcomp(&regex, R"(^[A-Za-z0-9\*]+$)", 0);

(如果你想在正则表达式中使用()字符,你当然必须选择另一个分隔符。)