Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用VS2010。
我有正则表达式的问题
我应该使用什么正则表达式来搜索字符串
std::string foo("s:{foo} s1:{bar}");
单词 foo、bar 并且可能知道它们的位置。
我以为像
std::regex r("\\{.*\\}");
应该管用。但事实并非如此。为什么?
对于字符串s:{foo} s1:{bar}
s:{foo} s1:{bar}
{.*}会匹配{foo} s1:{bar}
{.*}
{foo} s1:{bar}
.*贪婪地匹配,在你的情况下它会匹配到最后一个 }
.*
}
{.*?}会匹配{foo},并且在下一场比赛中会匹配{bar}
{.*?}
{foo}
{bar}
.*?懒惰地匹配,在你的情况下它会匹配到第一个 }
.*?