从现有的正则表达式中选择特定匹配项

我有一段文本,其中包含一系列美元价值。目的是每次提取第三美元的价值。示例文本如下。

Bunch of text blah blah blah
Ctr Pty ID: 1 $4,233.65 $5,073.64 $9,307.29 $9,273.41 $0.00 $0.00 $33.88

我想出了下面的代码,该代码与美元符号后的所有值匹配,但是我没有找到提取第三个值的方法:

(?<=Ctr Pty ID.*\$)\S+

结果:

4,233.65 5,073.64 9,307.29 9,273.41 0.00 0.00 33.88

我希望拉出第三美元的价值,在本例中为9,307.29

nothingspeaker 回答:从现有的正则表达式中选择特定匹配项

如果您只想选择匹配项并在后面使用量词,则可以断言左边的选项是Ctr Pty ID:,然后是除$以外的3倍字符,然后匹配$

然后,将非空格字符匹配1+次。

(?<=Ctr Pty ID:(?:[^$]+\$){3})\S+

Regex demo

要使用美元的当前格式(带逗号和点号)进行更具体的匹配,您可以使用

(?<=Ctr Pty ID:[^$]*(?:\$[0-9]{1,3}(?:,[0-9]{3})*\.[0-9]{2} ){2}\$)[0-9]{1,[0-9]{3})*\.[0-9]{2}

Regex demo

本文链接:https://www.f2er.com/3163557.html

大家都在问