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

如何用正则表达式提取字符串中的重复与非重复数字?

正则提取重复与非重复数字解决方案

实现思路

通过匹配所有连续的相同数字组,再根据组的长度区分重复数字组(长度≥2)和非重复数字(长度=1),一次遍历即可完成分类。

完整代码示例

import re

s = '1222311'
# 匹配所有连续的相同数字组
pattern = r'(\d)\1*'
matches = re.finditer(pattern, s)

repeating = []
non_repeating = []

for match in matches:
    group = match.group()
    if len(group) >= 2:
        repeating.append(group)
    else:
        non_repeating.append(group)

# 按照预期格式输出
print(f"Repeating digit :  {', '.join(repeating)}")
print(f"Non Repeating digit : {', '.join(non_repeating)}")

代码解释

  • 正则r'(\d)\1*':(\d)捕获单个数字,\1*匹配0个或多个与捕获组相同的数字,以此将所有连续相同的数字作为整体匹配出来。
  • 遍历匹配结果时,通过组的长度判断分类:长度≥2的归为重复数字组,长度为1的归为非重复数字。
  • 最后用join方法拼接列表,输出符合要求的格式。

输出结果

Repeating digit :  222, 11
Non Repeating digit : 1, 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:22:09