You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式输出连续数字出现次数?当前仅能获取首个匹配

解决连续数字出现次数统计问题

你的问题出在两个地方:一是re.search只会返回第一个匹配项,没法获取所有结果;二是当前正则(\d)\1+只能匹配连续重复2次及以上的数字,漏掉了单次出现的情况。

下面是修正后的代码,能完整统计所有连续数字的出现次数:

import re

sequence = '1222311'
result = []
# 匹配所有连续相同的数字,包括单次出现的
for match in re.finditer(r'(\d)\1*', sequence):
    digit = int(match.group(1))
    occurrence = len(match.group())
    result.append((occurrence, digit))

# 按要求格式输出
print(' '.join(f'({cnt}, {num})' for cnt, num in result))

代码说明:

  • 用re.finditer替代re.search:它会返回所有匹配项的迭代器,遍历就能拿到全部结果。
  • 正则(\d)\1*:(\d)捕获单个数字,\1*表示和该数字相同的字符出现0次或多次,既能匹配连续重复的数字,也能覆盖单次出现的情况。
  • 每个匹配的match.group()是完整的连续数字串,长度就是出现次数;match.group(1)是对应的单个数字,转成整数即可。

运行代码后,输出结果完全符合要求:

(1, 1) (3, 2) (1, 3) (2, 1)

内容的提问来源于stack exchange,提问作者memotib827

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 04:44:55