3
我有一点C++ 11 RegEx的问题,我认为它是关于贪婪。C++ 11正则表达式,非贪婪
这是一个小样本。
#include <stdio.h>
#include <string>
#include <regex>
int main (void)
{
std::string in="{ab}{cd}[ef]{gh}[ij][kl]"; // the input-string
std::regex rx1 ("(\\{.+?})(.*)", std::regex::extended); // non-greedy?
std::smatch match;
if (regex_match (in, match, rx1))
{
printf ("\n%s\n", match.str(1).c_str());
}
return 0;
}
我希望
{ab}
输出。 但我得到
{ab}{cd}[ef]{gh}
我期望的结果我得到的,如果我贪心,但不与做呢?之后。+。 应该让它不贪心吧?
那么,我的想法是什么问题? 感谢您的帮助!
克里斯
为什么你逃跑用'\\ {'但是你不要逃右大括号的大括号? – Bobulous
@Bobulous这是一个正则表达式的特殊字符,它有助于重复以前的模式。 –
我认为你不应该使用'std :: regex :: extended',它使你的正则表达式符合POSIX ERE,不支持懒惰量词。 –