【发布时间】:2012-03-12 09:35:16
【问题描述】:
我希望能够遍历正在针对正则表达式进行测试的字符串,如果它未能输出与字符串的其余部分一起失败的位置。
即
boost::regex const string_matcher("[0-9]{5}");
if (boost::regex_match(12A45,string_matcher))
{
DCS_LOG_DEBUG("Correct\n");
}
else
{
DCS_LOG_DEBUG("Incorrect\n");
}
所以这个输出是
"A45"
【问题讨论】:
-
一般情况下无法回答。如果您有一个正则表达式
(a.b)|(ac[de]),匹配aee在位置3(不是b)或位置2(不是c)失败。当一种可能性不起作用时,正则表达式引擎会回溯,这是一个二元决策。它不会跟踪“它走了多远”。因此,我的示例中的数字“3”没有被存储。