小编Dar*_*ida的帖子

提升正则表达式.命名小组分为两部分

我有问题boost::regex::regex_match.我打开工作BOOST_REGEX_MATCH_EXTRA.


是)我有的:

(这是我的问题的一个简单例子,而不是一个真正的任务)

string input1= "3 4 5";
string input2= "3 4 7";
Run Code Online (Sandbox Code Playgroud)

我想得到什么:

list output1= [3 4 5];
list output2= []; //not matched
Run Code Online (Sandbox Code Playgroud)

正则表达式:

(这工作正常)

((?<group>[0-6])[ ]?)*
Run Code Online (Sandbox Code Playgroud)

output1:what["group"]=5what["group"].captures()= [3, 4, 5]

输出2: not matched

问题是:

我需要从正则表达式的多个部分收集数据到一个组.

我试过了:

((?<group>[0-6])[ ])*(?<group>[0-6])
Run Code Online (Sandbox Code Playgroud)

output1:what["group"]=4what["group"].captures()=[3, 4]

输出2: not matched

好的,我明白了.它没有看到第二组声明.

我试过了:

((?<group>[0-6])[ ])*(?&group)
Run Code Online (Sandbox Code Playgroud)

output1:what["group"]=4what["group"].captures()= [3, 4, 4]

输出2: not matched

  • 但这是什么?第二个4来自哪里?它检查"组"模式,因为第一个示例匹配,但第二个示例不匹配.但它最后找到的价值翻倍,而不是保存新价值.为什么?也许我忘了打开一些旗帜?
  • 还有另一种方法可以从正则表达式的不同部分获取一组数据吗?

我有一个以上的组,所以token_iterator无法帮助我.

表达式应该在配置文件中配置.静态Xpressive不能使用.

c++ regex boost boost-regex regex-group

5
推荐指数
1
解决办法
1913
查看次数

标签 统计

boost ×1

boost-regex ×1

c++ ×1

regex ×1

regex-group ×1