我正在尝试在文本正文中找到价格值。我找到了一些示例正则表达式,几乎解决了问题,但没有一个是完美的。我遇到的问题是我的文本中的数字可能有也可能没有小数。
使用此正则表达式\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2})
,我无法正确找到此价格1.300
我的价格可能是:
从0到无限,有或没有点,以分隔数千(1000
或1.000
,1.000.000
或1000000
等)
如果值为整数(10,20
或10
),则使用逗号表示小数或不使用逗号
如何针对这些案例调整我的正则表达式?感谢
无线
答案 0 :(得分:3)
\b\d{1,3}(?:\.?\d{3})*(?:,\d{2})?\b
\b
断言位置为单词边界\d{1,3}
匹配一到三位数字(?:\.?\d{3})*
符合以下任意次数
\.?
可选择匹配千位分隔符(文字点)\d{3}
正确匹配任意数字3次(?:,\d{2})?
可选择匹配以下内容
,
按字面意思匹配\d{2}
匹配任意数字两次\b
断言位置为单词边界