0

私はVS2010を使用しています。

正規表現に問題がある

文字列を検索するには、どの正規表現を使用すればよいですか

std::string foo("s:{foo} s1:{bar}");

単語 foo、bar であり、おそらくそれらの位置を知っています。

のようなものだと思いました

std::regex r("\\{.*\\}");

動作するはずです。しかし、そうではありません。なんで?

4

1 に答える 1

1

文字列用s:{foo} s1:{bar}

{.*}一致します{foo} s1:{bar}

.*貪欲に一致します。つまり、あなたの場合は最後 まで一致します。}


{.*?}一致{foo}し、次の一致で一致します{bar}

.*?怠惰に一致します。つまり、あなたの場合は最初 まで一致します。}

于 2012-11-13T09:28:42.263 に答える