正则表达式负面观察和前瞻

时间:2017-12-03 15:02:15

标签: regex

我试图从字符串中捕获价格。但是,我在捕捉价格组方面面临一些困难。以下是我的示例数据和我的方法。

示例

cash $450
012-6323735 
cash 450
500

当前方法

我尝试使用负面的lookbehind和“ - ”字符的前瞻

(?<!\-)(\d+)(?!\-)

当前输出

enter image description here

有人有任何想法捕捉价格组吗?

所需输出

  

现金450美元(True,Capture Group 450)

     

012-6323735(错误)

     

现金450(True,Capture Group 450)

     

500(True,Capture Group 500)

1 个答案:

答案 0 :(得分:2)

当你告诉正则表达式一串数字之前/之后的值不能是破折号时,正则表达式引擎很乐意使用序列中的一个数字来满足这个要求。例如,它表示01后跟2,后者不是短划线,因此01必须是您要捕获的内容;显然,这不是你想要的。

解决此问题的一种方法是在捕获组之前和之后添加锚点\b

(?<!\-)\b(\d+)\b(?!\-)

Demo.