正则表达式以匹配价格值

时间:2018-02-13 16:00:19

标签: python regex python-2.7

我正在尝试在文本正文中找到价格值。我找到了一些示例正则表达式,几乎解决了问题,但没有一个是完美的。我遇到的问题是我的文本中的数字可能有也可能没有小数。 使用此正则表达式\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2}),我无法正确找到此价格1.300

我的价格可能是: 从0到无限,有或没有点,以分隔数千(10001.0001.000.0001000000等) 如果值为整数(10,2010),则使用逗号表示小数或不使用逗号

如何针对这些案例调整我的正则表达式?感谢

无线

1 个答案:

答案 0 :(得分:3)

See regex in use here

\b\d{1,3}(?:\.?\d{3})*(?:,\d{2})?\b
  • \b断言位置为单词边界
  • \d{1,3}匹配一到三位数字
  • (?:\.?\d{3})*符合以下任意次数
    • \.?可选择匹配千位分隔符(文字点)
    • \d{3}正确匹配任意数字3次
  • (?:,\d{2})?可选择匹配以下内容
    • ,按字面意思匹配
    • \d{2}匹配任意数字两次
  • \b断言位置为单词边界