我有以下字符串: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(.*+)
好的,根据您更新的问题,您需要更加严格。尝试将
[^D\-1]
更改为(?:HUD\-1)?
。就其价值而言,您的货币RegEx松懈,可以输入以下内容:001 001 .31412341234123
您可能会考虑不要在那儿重新发明轮子,我相信您可以通过Google快速找到货币RegEx。否则,我还建议您在RegEx的末尾加上
$
。关于java - 正则表达式:如何不匹配几个字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14203439/