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

如何用Python提取字符串中指定长度的连续重复字符序列?

提取字符串中指定长度的连续相同字符序列

这个需求用Python的正则表达式就能完美解决,思路很直接——我们需要精准匹配连续恰好N个相同字符的片段,同时避免从更长的连续序列中误截取。

实现代码

import re

# 你的输入字符串
x = "jhg**11111**jjhgj**11111**klhhkjh111ljhjkh1111"
# 指定要提取的连续序列长度
target_length = 5

# 构造正则表达式:匹配恰好target_length个相同字符的连续片段
pattern = rf'(?<!\1)(.)\1{{{target_length - 1}}}(?!\1)'
# 捕获所有符合条件的字符
matched_chars = re.findall(pattern, x)
# 将单个字符扩展为目标长度的序列
result = [char * target_length for char in matched_chars]

# 输出结果
print(' '.join(result))

代码解释

  • (.):捕获任意单个字符(数字、符号、字母都适用)
  • \1{{{target_length - 1}}}:通过反向引用\1调用刚才捕获的字符,让它重复target_length-1次,加上之前的1次,刚好是我们要的长度
  • (?<!\1):负向零宽断言,确保当前匹配片段的前一个字符不是我们捕获的字符,避免从更长的连续序列(比如6个1)的开头截取
  • (?!\1):同样是负向零宽断言,确保片段的后一个字符也不是捕获的字符,避免从更长序列的结尾截取
  • 最后通过char * target_length把单个捕获的字符还原成完整的连续序列

运行这段代码,你会得到预期输出:11111 11111

如果你的需求是提取至少N个相同字符的连续序列(比如从6个1中也能提取出11111),只需要去掉前后的断言,改成rf'(.)\1{{{target_length - 1}}}',不过这种情况下可能会得到重复的匹配结果,需要额外去重处理哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:44:29