2

re2での最初の試みで、このコードをここに作成しました:

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

うまくいきません。s変化せず、空白のままです。最初の行を に変更しstring s = "foo";、2 行目を実行した後sは のままにし"foo"ます。

私は何を間違っていますか?

4

3 に答える 3

2

使用法には2つの問題がありますPartialMatch

  1. Jesse Goodがすでに述べたように、正規表現は最初の引数ではなく2番目の引数である必要があります。
  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);。文字列に「例」が表示されるはずです。最初の引数は検索する文字列で、2 番目の引数はパターンです。

于 2012-07-01T20:45:59.007 に答える
0

.\\.comそれがキャプチャする間違った正規表現でanySymbol\.comあり、あなたは同じように必要です/.+\.com

于 2012-07-01T20:22:16.143 に答える