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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog