2

我在第一次尝试使用 re2 时就在此处编写了此代码:

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

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

我究竟做错了什么?

4

3 回答 3

2

您对 的使用有两点错误PartialMatch

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

这应该有效:

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

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

RE2::PartialMatch("http://example.com/", "(.+)\\.com", &s);
于 2012-07-01T21:23:25.047 回答
1

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

于 2012-07-01T20:45:59.007 回答
0

.\\.com它捕获的正则表达式是错误的anySymbol\.com,您需要相同的/.+\.com

于 2012-07-01T20:22:16.143 回答