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

Python正则表达式无法匹配连续重复字符组问题求助

问题修复方案

原代码的核心问题

  1. if True是恒成立的条件,无论是否匹配到目标内容,都会输出"Yes"
  2. 正则表达式仅匹配任意一组连续重复字母,没有统计重复组的数量,无法满足"三组连续重复"的需求
  3. 未正确管理文件资源,且硬编码路径缺乏跨平台兼容性

修复后的代码(结合re和os模块)

import re
import os

# 用os模块构造跨平台文件路径,避免硬编码的兼容性问题
file_path = os.path.join(os.path.expanduser('~'), 'Desktop', 'List.txt')

# 使用with语句自动管理文件资源,无需手动关闭
with open(file_path, 'r') as text:
    for line in text:
        # 去除行首尾空白字符(包括换行符)
        word = line.strip()
        # 匹配所有连续重复至少2次的字母组
        duplicate_groups = re.findall(r'(\w)\2+', word)
        # 判断是否存在至少3组连续重复
        if len(duplicate_groups) >= 3:
            print("Yes")
        else:
            print("No")

代码说明

  • os模块的作用:通过os.path.expanduser('~')获取当前用户主目录,再用os.path.join拼接路径,让代码在Windows、Linux、macOS下都能正常运行
  • 正则表达式r'(\w)\2+':匹配连续重复至少2次的字母(如"oo""kk"),\2引用第一个捕获组的内容,确保是相同字母连续重复
  • 匹配逻辑:用re.findall提取所有符合要求的重复组,只要数量≥3就输出"Yes",否则输出"No"
  • 文件处理:with语句会在代码块结束后自动关闭文件,避免资源泄漏

补充:匹配三组不同字母的连续重复

如果需要严格匹配三组不同字母的连续重复(比如bookkeeper里的oo、kk、ee),可以修改判断逻辑:

duplicate_groups = re.findall(r'(\w)\2+', word)
# 对匹配结果去重后判断数量是否≥3
if len(set(duplicate_groups)) >= 3:
    print("Yes")
else:
    print("No")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:15:51