如何用正则表达式提取字符串中的重复与非重复数字?
正则提取重复与非重复数字解决方案
实现思路
通过匹配所有连续的相同数字组,再根据组的长度区分重复数字组(长度≥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
相关产品推荐
相关产品推荐

