re2根本不会改变字符串

时间:2012-07-01 20:12:13

标签: c++ regex re2

我在第一次使用re2:

时就在这里制作了这段代码
string s;
RE2::PartialMatch(".+\\.com","http://example.com/", &s);

它不起作用; s不会更改并保持空白。我可以将第一行更改为string s = "foo";,在第二行之后,s将保持为"foo"

我做错了什么?

3 个答案:

答案 0 :(得分:2)

使用PartialMatch时出现两个问题:

  1. 正如Jesse Good已经提到的,正则表达式应该是第二个参数而不是第一个。
  2. PartialMatch的指针参数用于存储正则表达式的捕获组匹配的子字符串。您的正则表达式不包含任何捕获组,因此不会向指针写入任何内容。
  3. 这应该有效:

    RE2::PartialMatch("http://example.com/", "(.+\\.com)", &s);
    

    或者,如果您不希望s包含“.com”部分:

    RE2::PartialMatch("http://example.com/", "(.+)\\.com", &s);
    

答案 1 :(得分:1)

尝试翻转它们RE2::PartialMatch("http://example.com/","example", &s);它应该在字符串中给你“示例”。第一个参数是您要搜索的字符串,第二个参数是模式。

答案 2 :(得分:0)

.\\.com错误的正则表达式捕获anySymbol\.com,你需要像/.+\.com