我是c ++ regex
库的新手。我注意到在cplusplus.com上的文档中,在他们的示例中,如果我使用匹配整个目标序列的正则表达式,他们用于终止迭代循环的条件将始终返回true
。理想情况下,循环应匹配一次然后终止。这是我的代码:
#include <iostream>
#include <regex>
int main()
{
std::string str("Foo bar");
std::regex reg("(.|[\r\n])*"); // Match the whole string
std::regex_iterator<std::string::iterator> rit(str.begin(), str.end(), reg);
std::regex_iterator<std::string::iterator> rend;
while (rit != rend) // For some reason this is always true
{
std::cout << "Infinite loop!" << std::endl;
rit++;
}
return 0;
}
我做错了什么?
答案 0 :(得分:3)
不是肯定的,必须验证,但我相信你的*
表示0或更多。所以它可以永远匹配字符串末尾的0。