我试图从字符串中捕获价格。但是,我在捕捉价格组方面面临一些困难。以下是我的示例数据和我的方法。
示例
cash $450
012-6323735
cash 450
500
当前方法
我尝试使用负面的lookbehind和“ - ”字符的前瞻
(?<!\-)(\d+)(?!\-)
当前输出
有人有任何想法捕捉价格组吗?
所需输出
现金450美元(True,Capture Group 450)
012-6323735(错误)
现金450(True,Capture Group 450)
500(True,Capture Group 500)
答案 0 :(得分:2)
当你告诉正则表达式一串数字之前/之后的值不能是破折号时,正则表达式引擎很乐意使用序列中的一个数字来满足这个要求。例如,它表示01
后跟2
,后者不是短划线,因此01
必须是您要捕获的内容;显然,这不是你想要的。
解决此问题的一种方法是在捕获组之前和之后添加锚点\b
:
(?<!\-)\b(\d+)\b(?!\-)