我有以下字符串:
<? repeat min=1 max=2 ?>[A-Z0-9]{6},< ? endrepeat ?>100,USD,Washington
&lt;之间没有空格和?在实际字符串中
我使用以下代码:
boost::regex repeatRegex("<\? repeat min=[0-9]+ max=[0-9]+ \?>(.*)<\? endrepeat \?>");
std::string theString = "<? repeat min=1 max=2 ?>[A-Z0-9]{6},<? endrepeat ?>100,USD,Washington";
boost::sregex_token_iterator itr(repeatDefinition.begin(), repeatDefinition.end(), repeatRegex);
boost::sregex_token_iterator end;
std::cout << std::endl << repeatDefinition << std::endl;
for(; itr != end; ++itr)
{
std::cout << *itr << std::endl;
}
代码永远不会进入for循环。我用rubular regex中的输入字符串测试了正则表达式,它显然有效。任何指针都将非常感激。
答案 0 :(得分:0)
首先,我希望您了解将repeatDefinition
和theString
混合为标识符的事实?
其次,您需要在c ++字符串文字中转义\
:
boost::regex repeatRegex("<\\? repeat min=[0-9]+ max=[0-9]+ \\?>(.*)<\\? endrepeat \\?>");
我也可以提请你注意这个答案: