我有问题boost::regex::regex_match
。我使用打开的BOOST_REGEX_MATCH_EXTRA
.
我有的:
(这是我的问题的一个简单示例,不是真正的任务)
string input1= "3 4 5";
string input2= "3 4 7";
我想得到什么:
list output1= [3 4 5];
list output2= []; //not matched
正则表达式:
(这工作正常)
((?<group>[0-6])[ ]?)*
输出1:what["group"]=5
和what["group"].captures()= [3, 4, 5]
输出2:not matched
问题是:
我需要从一组以上的正则表达式中收集数据。
我试过了:
((?<group>[0-6])[ ])*(?<group>[0-6])
输出1:what["group"]=4
和what["group"].captures()=[3, 4]
输出2:not matched
好的,我明白了。它没有看到第二次组声明。
我试过了:
((?<group>[0-6])[ ])*(?&group)
输出1:what["group"]=4
和what["group"].captures()= [3, 4, 4]
输出2:not matched
- 但是这是什么?第二个4来自哪里?它检查“组”模式,因为第一个示例匹配,但第二个不匹配。但它使最后发现的价值翻了一番,而不是保存新的。为什么?也许我忘了打开一些标志?
- 还有另一种方法可以从正则表达式的不同部分获取一组数据吗?
我有不止一组,所以 token_iterator 帮不了我。
并且表达式应该在配置文件中配置。不能使用静态 Xpressive。