正则表达式捕获第n个匹配

时间:2014-05-09 02:11:44

标签: regex

有没有办法,使用正则表达式,返回第n次出现?我确实搜索了论坛,只发现了超出正则表达式的解决方案(即需要编程语言的支持)。

实施例: 正则表达式:

(?:\$(\d+(?:,\d{3})*\.\d{2}))

输入:

    thiscanbeanything$25.74thiscanbesomethingelse
alsowithnewlines$533.63thisonetoo$54.32plusthis$62.42thisneverends

我需要提取第一个(25.74)。稍后我可能需要提取第三个(即54.32)。

我的正则表达式目前正在匹配所有匹配项。我可以在匹配后检索第n个元素,但我的问题是:是否可以通过正则表达式来执行它(即正则表达式只返回我想要的第n个元素)?

谢谢!

1 个答案:

答案 0 :(得分:4)

第n次比赛使用此模式(?:.*?\$[0-9.]+){XX}.*?(\$[0-9.]+)
其中XX = n-1

Example for 3rd match