happyguns 2020-03-15 21:48 采纳率: 0%
浏览 790

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条回答 默认 最新

  • 时光放逐 2020-03-15 23:34
    关注

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

    评论

报告相同问题?