写一个正则表达式,匹配每 3 位就有一个逗号的数字?
匹配以下数字: '42' '1,234' '6,368,745'
但不会匹配: '12,34,567' (逗号之间只有两位数字) '1234' (缺少逗号)
s = '42 1,234 6,368,745 12,34,567 1234'
numRegex = re.compile(r'\d{1,3},\d{3}') #',\d{3}'为需要一起重复的4个字符.
print(numRegex.findall(s))
写一个正则表达式,匹配每 3 位就有一个逗号的数字?
匹配以下数字: '42' '1,234' '6,368,745'
但不会匹配: '12,34,567' (逗号之间只有两位数字) '1234' (缺少逗号)
s = '42 1,234 6,368,745 12,34,567 1234'
numRegex = re.compile(r'\d{1,3},\d{3}') #',\d{3}'为需要一起重复的4个字符.
print(numRegex.findall(s))
r'\b\d{1,3}(?:,\d{3})*(?!,)\b'可以正确匹配42 1,234 6,368,745但会误匹配到34,567
个人认为可以如下进行
list1 = s.split()
list2 = []
numRegex = re.compile(r'^\d{1,3}(?:,\d{3})*(?!,)$')
for i in list1:
list2.extend(numRegex.findall(i))
print(list2)
或者可以
numRegex = re.compile(r' (\d{1,3}(?:,\d{3})*)(?!,)\b') #注意空格
print(numRegex.findall(' ' + s))