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

igo*_*jrr 4 regex

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

示例:正则表达式:

(?:\$(\d+(?:,\d{3})*\.\d{2}))
Run Code Online (Sandbox Code Playgroud)

输入:

    thiscanbeanything$25.74thiscanbesomethingelse
alsowithnewlines$533.63thisonetoo$54.32plusthis$62.42thisneverends
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

alp*_*avo 5

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

第三次比赛示例

  • 但这会突出显示第 n 个元素(包括第 n 个元素),如何仅返回第 1 组的内容? (2认同)