我正在学习Python并通过#34;使用Python自动化无聊的东西"。以下问题出现在Regex章节中:
你如何编写一个与逗号匹配的正则表达式 每三位数?它必须符合以下条件:
但不是以下内容:
书中的答案如下:
re.compile(r'^\d{1,3}(,{3})*$') #will create this regex, but other regex strings can produce a similar regular expression.
然而,当我尝试这个时,它无法识别1,234这样的数字。在shell中我输入:
numRegex = re.compile(r'^\d{1,3}(,{3})*$')
我的搜索产生以下内容:
numRegex.search('42')
< _sre.SRE_Match对象; span =(0,2),match =' 42'>
numRegex.search('1,234')
numRegex.search('6,368,745')
numRegex.search('1234')
numRegex.search('36')
< _sre.SRE_Match对象; span =(0,2),match =' 36'>
事实证明正则表达式返回1000以下值的结果,但当数字高于3位数时,逗号或否,我得不到结果。建议?
阿德里安
答案 0 :(得分:-2)
如果您希望将数字与数千个分隔符匹配,则需要在正则表达式中修正拼写错误:
if
现在,如果您还要匹配没有逗号的数字,您还需要将其设为可选:
re.compile(r'^\d{1,3}(,\d{3})*$')
没有捕获组的更快版本(更快):
re.compile(r'^\d{1,3}(,?\d{3})*$')