重复可变长度正则表达式匹配

时间:2014-10-23 20:58:58

标签: regex

我有一个表达

AA-BB/CC/DD

我想将其转换为

<AA-BB> <AA-CC> <AA-DD>

我所能做的就是将其配置为正则表达式替换。我无法弄清楚。

AA应该在一行的开头匹配。 -/是字面字符,BB,CC和DD是数字,即\d+

所以初稿是......

^(\w+)([\-/]\d+)+

但我想要所有比赛,而不仅仅是贪婪的比赛。

(实际上这个也与AA-BB-CC-DD相匹配,但是没关系,虽然不符合规格)

1 个答案:

答案 0 :(得分:1)

不,你不能用正则表达式做到这一点。可能使用.net,因为你可以访问重复捕获组的所有中间结果......

Repeating a Capturing Group vs. Capturing a Repeated Group

这就是问题所在,如果您执行^(\w+)([\-/]\w+)+之类的操作,则存储在group2中的值始终只是它匹配的最后一个模式。正则表达式/替换无法完成任务。

我会做类似的事情:

^(\w+)-([\w+\/]+)

然后用&#34; /&#34;分割第2组的内容。并将group1与由拆分产生的数组中的每个元素组合在一起。