3
string str = "hello world!\r\naa=`xxx_1`\r\nhello world!";
sregex rx = sregex::compile(".+=`(.+)_1`");
smatch what;
if( regex_match( str, what, rx ) )
{
    std::cout << what[1] << '\n';
}

これは機能しません。boost.regex ではなく boost.xpressive を使用します。複数行のテキストを一致させる方法は?

4

1 に答える 1

5

私はこの問題を解決しました。

http://boost-sandbox.sourceforge.net/libs/xpressive/doc/html/boost_xpressive/user_s_guide/matching_and_searching.html

regex_match() アルゴリズムは、正規表現が最初から最後まで入力全体と一致する場合にのみ成功を報告します。正規表現が入力の一部のみに一致する場合、regex_match() は false を返します。正規表現が一致する部分文字列を探して文字列を検索する場合は、regex_search() アルゴリズムを使用します。

于 2012-06-18T07:32:27.887 に答える