正则表达式,每三位数字与逗号匹配

时间:2016-07-21 09:27:55

标签: python regex

需要匹配这些

  • '42'
  • '1234'
  • '6368745'

但不是以下内容:

  • '12,34,567'(逗号之间只有两位数字)
  • '1234'(缺少逗号)

我一直在使用http://www.regexpal.com/之类的网站来测试表达式。

我试过

  • ^\d{1,3}(,\d{3})*$
  • (\d{1,3},)*(\d{1,3})$
  • ([0-9]{1,3},)*([0-9]{1,3})$
  • [0-9]{1,3}((,[0-9]){1,3})*

但它不起作用。

有人可以解释我的尝试和模型答案有什么问题吗?

2 个答案:

答案 0 :(得分:1)

^([0-9]{1,3})(,[0-9]{3})*$

应该做你想做的事。 我通常使用http://pythex.org/来测试python正则表达式字符串。

答案 1 :(得分:0)

我认为以下模式符合您的需求 它允许接受的数字前面加一个前面没有数字的逗号,后面跟一个逗号后跟一个数字。

pati = ('(?<!\d,)(?<!\d)'
        '('
        '\d{1,3}'  '(?:,\d\d\d)*'
        ')'
        '(?!,\d)(?!\d)'
        )

rgx= re.compile(pati)