1

我正在尝试找到一个与 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 #(???)

我如何实现这一目标?

4

1 回答 1

0

捕获量化的构造,不要量化捕获组。

在这里,我们还在内部部分使用“仅分组”括号(无捕获组)并捕获外部以获得干净的结果:

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

您想要在捕获中重复构造()重复组”没有意义,在大多数引擎中,只会捕获匹配组的最后一个结果。(尽管一些正则表达式引擎将允许重复捕获组记住所有子匹配项(例如.NET))

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

于 2017-01-15T23:46:23.340 回答