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 回答