boost :: sregex_token_iterator与有效的正则表达式模式不匹配

时间:2014-03-04 19:18:26

标签: boost boost-regex

我有以下字符串:

<? 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中的输入字符串测试了正则表达式,它显然有效。任何指针都将非常感激。

1 个答案:

答案 0 :(得分:0)

首先,我希望您了解将repeatDefinitiontheString混合为标识符的事实?

其次,您需要在c ++字符串文字中转义\

boost::regex repeatRegex("<\\? repeat min=[0-9]+ max=[0-9]+ \\?>(.*)<\\? endrepeat \\?>");

查看 Live On Coliru

我也可以提请你注意这个答案: