Python 价格的正则表达式模式

Python 价格的正则表达式模式,python,regex,python-2.7,Python,Regex,Python 2.7,这可能是个愚蠢的问题,但我对正则表达式还不熟悉。 我需要一个正则表达式模式,在我的python程序中提供一个价格 示例案例: 8.00 25.14 271.61 2,367.82 52,124.09 9,37,159.82 任何帮助都将不胜感激。提前感谢。这一项符合上述所有条件: (\d{1,3},?)*\d{1,3}\.\d{2} 您正在尝试匹配根据规则格式化的数字。为了正确地做到这一点,您必须仔细定义您希望作为匹配处理的内容。例如,字符串100、10100.00是否构成匹配?您可以在本示

这可能是个愚蠢的问题,但我对正则表达式还不熟悉。 我需要一个正则表达式模式,在我的python程序中提供一个价格

示例案例:

8.00
25.14
271.61
2,367.82
52,124.09
9,37,159.82

任何帮助都将不胜感激。提前感谢。

这一项符合上述所有条件:

(\d{1,3},?)*\d{1,3}\.\d{2}

您正在尝试匹配根据规则格式化的数字。为了正确地做到这一点,您必须仔细定义您希望作为匹配处理的内容。例如,字符串100、10100.00是否构成匹配?您可以在本示例中找到一个有效格式的数字,即10100.00,但我假设出于您的目的,示例中的字符串不应匹配。我详细阐述了一些测试,并提出了这个测试套件:

# match
8.00
25.14
271.61
2,367.82
52,124.09
9,37,159.82

# don't match
9,378,159.82
9,37,159.820
12,.80
12,12
12.,12
12,12.80
10,80
.80
80,
下面的正则表达式成功地通过了这些测试

(?<![\d,])((\d{1,2},)*\d{3}|(\d{1,3}))\.\d{2}(?!\d)

我认为你的最后一个例子格式不好。逗号后面应该跟三位数字,你有9,37159.82是的,但是amazon.in使用相同的定价模式,我的程序从amazon.in中获取数据。在提问之前,请先研究一下正则表达式。如果你仍然没有成功,那么展示一下你在问题中尝试了什么。@kaveman:如果一篇帖子有问题,请详细描述问题,而不是仅仅发布你尝试过的内容。查看您尝试过的内容是否可以接受,以及您尝试过的内容的替代方案。谢谢为什么:937159.82匹配?恐怕我不太明白你的问题,但我会尽力解释。9,37159.82是一个符合印度编号系统的格式正确的数字。解释为什么提供的正则表达式与这个特定的数字匹配(即编写regex的逐步执行)对于注释来说太长了。如果您有兴趣了解正则表达式引擎将采取哪些步骤,我建议使用调试工具。在这个问题中,你可以找到不同的选项来调试正则表达式。从来没有见过在1和2个数字之后使用逗号的价格,仅此而已。价格通常为100000.00美元或类似的价格。OP没有提到印度的编号系统,但我也不熟悉。