我有以下字符串:SEE ATTACHED ADDENDUM TO HUD-1194,520.07
该字符串中的内容为HUD-1
,之后为194,520.07
。我想要的是194,520.07
部分。
我编写了以下正则表达式来拉出该值:
[^D\-1](?:-|\()?\$?(?:\d{1,3}[ ,]?)*(?:\.\d+)\)?
但是,这会导致:94,520.07
我知道这与这部分有关:[^D\-1]
“吃”了许多1
。任何想法如何阻止它在1
中出现的第一个之后“吃掉”HUD-1
?
更新:
所有其他东西的原因是我只想匹配HUD-1之后的值是金额。其余的正则表达式试图确定可以写出金额的所有不同方式
答案 0 :(得分:1)
为什么不能像以下那样简单:
.*HUD\-1(.*+)
好的,我需要根据您更新的问题进行更严格的限制。尝试将[^D\-1]
更改为(?:HUD\-1)?
。对于它的价值,您的货币RegEx变化不大,允许输入如下:
001 001 .31412341234123
您可能会认为不重新发明轮子,我相信您可以通过Google快速找到货币RegEx。否则,我还建议将RegEx锚定在$
的末尾。
答案 1 :(得分:0)
此更改将使正则表达式的第二个匹配组包含您想要的完整数字(第一个之后的所有内容),并将可能的HUD-1放在单独的匹配组中(如果存在)。
(HUD-1)?((?:-|\()?\$?(?:\d{1,3}[ ,]?)*(?:\.\d+)\)?)