re2 header中说

// C++ interface to the re2 regular-expression library.
// RE2 supports Perl-style regular expressions (with extensions like
// \d, \w, \s, ...).


我注意到我的模式失败,然后发现\ w似乎不起作用。这是我的代码。为什么不起作用?

#include <re2/re2.h>
#include <iostream>

int main(){
    RE2::Arg s, i;
    std::string sz("a or b");
    RE2::Replace(&sz, "\w", "!");
    std::cout << sz << std::endl;
}

最佳答案

正如约翰尼·莫普(Johnny Mopp)在他的评论中提到的那样,当您可能要传递表达式\w时,您正在将文字\w传递给字符串。因此,您需要使用\\w传递表达式。

实际上,在您自己链接的header中,所有示例的字符串中都带有\\w

09-06 05:40