正则表达式:如何用逗号分隔成千上万?

时间:2016-01-18 23:25:52

标签: python regex

我正在python中编写一个程序,试图以999,999,999格式捕获数字我现在不关心小数点。所以我的正则表达式应该抓住以下内容:123,456,789; 42; 3,999但忽略42,28,11; 2,34; 1234

我尝试了以下正则表达式,它主要起作用:

\d{1,3}(,\d{3})*

问题在于,它将给出以下结果:

42,28,11 - will catch the 42, 28 AND 11
1234     - will catch the 123 AND the 4

如果我添加插入符号并且美元^\d{1,3}(,\d{3})$将执行我想要的操作,但前提是该编号恰好位于该行的开头,并且该行仅包含该编号。那么,如何在文本中的任何位置将格式化的数字与逗号匹配?我用这个来突出显示文本中的数字。

1 个答案:

答案 0 :(得分:3)

尝试这种模式

(?<!,)\b(\d{1,3}(?:,\d{3})*)\b(?!,)

Demo