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

How can I match '*' in a regex

本文关键字:正则表达式      更新时间:2023-10-16

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

regex_t regex;
regcomp(&regex, "^[A-Za-z0-9*]+$", 0);
if (!regexec(&regex, args[j], 0, NULL, 0)) {
    printf("string found");
}

这样做对吗?我的代码与包含"*"的字符串不匹配。如有任何帮助,我们将不胜感激。

在C++中,字符需要转义。因此,如果要转义正则表达式*,则需要执行\*。这应该能解决问题。无论何时在字符串中使用反斜杠,都需要像这样对其进行转义。如果您需要使用regex在字符串中查找它,则需要使用\\进行搜索。

除了Pawel的答案之外,在C++11中,您还可以使用原始字符串文字来简化它:

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

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