python正则表达式 2个及以上字符要放在一起重复 如何表示?

写一个正则表达式,匹配每 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))

2个回答

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))

onelovelyc
happyguns 回复时光放逐: 嗯。 楼上的只会匹配到()分组里的内容。我刚刚才知道还有零宽、断言这些概念,我再补充一下知识再来研究,看看能不能找到更简便的方法。
7 个月之前 回复
qq_39593557
时光放逐 当然应该有更简便的方法,但我也只是一介学生,还在学习的过程中,如有不当还请见谅。
7 个月之前 回复
qq_39593557
时光放逐 回复蔡能教授,网站特聘专家: 楼上输出的是['', ',234', ',745', '', ',567', '', '']
7 个月之前 回复
qq_39593557
时光放逐 回复蔡能教授,网站特聘专家: 我用Python跑过了
7 个月之前 回复
dashicaineng
蔡能教授,网站特聘专家 错了吧,楼上才是正确的
7 个月之前 回复
\d{1,3)(\,\d{3})*
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐