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

问题描述 投票:1回答:1

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

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

我期望提取出第3美元的价值,在这种情况下为9,307.29

regex
1个回答
0
投票

[如果只想选择匹配项并在后面使用量词,则可以断言左边的是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,3}(?:,[0-9]{3})*\.[0-9]{2}

Regex demo

© www.soinside.com 2019 - 2024. All rights reserved.