正则表达式匹配数

时间:2019-07-19 02:40:58

标签: python regex

>>> import re
>>> b = re.findall(r'^\d{,3}(,\d{3})*','12,344,567')
>>> b
[',567']

我希望得到['12,344,567'],但实际输出是[',567']。哪里出问题了?预先感谢。

2 个答案:

答案 0 :(得分:1)

您需要使用?:,否则正则表达式仅捕获括号内的内容:

^\d{,3}(?:,\d{3})*

示例

import re

b = re.findall(r'^\d{,3}(?:,\d{3})*','12,344,567')
print(b)
# ['12,344,567']

答案 1 :(得分:1)

我的猜测是,您可能希望设计一个类似于以下内容的表达式:

import re

regex = r"^\d{1,3}(?:,\d{3})*$"
test_str = ("12,344,567")

print(re.findall(regex, test_str))

输出

['12,344,567']

如果要浏览/简化/修改该表达式,请在this demo的右上角进行解释。