RegEx捕获无限期重复具有特定反向引用的模式?

时间:2017-01-15 23:29:46

标签: regex textwrangler find-replace

我正在尝试找一个好的正则表达式与TextWrangler一起使用,将任务描述解析为Rememberthemilk.com格式:这样一行:

Example task section 1 section tomorrow section tagone tagtwo tagthree tagfour 

转换为RTM格式:

Example task !1 ^tomorrow #tagone #tagtwo #tagthree #tagfour 

现在这让我想到了如何在后向引用中使用正确的语法捕获无限重复模式?

我一直在尝试这个正则表达式:

^([\w ]+) section (\d) section (\w+) section ((\w+) )+$

似乎捕获了输入文本的格式,但我只是不知道如何在后向引用中进行转换?

\1 !\2 ^\3 #(???)

我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

捕获量化的构建体,不要量化捕获组。

这里我们还在内部区域使用“仅分组”的parens(没有捕获组)并捕获外部以获得干净的结果:

([\w ]+) section (\d) section (\w+) section ((?:\w+\s?)+)

你希望重复的构造里面捕获(),“重复群组”是没有意义的,在大多数引擎中只会抓取群组匹配的最后一个结果。 (虽然一些正则表达式引擎允许重复捕获组记住所有子匹配(例如.NET))

演示:https://regex101.com/r/y3CryR/2