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

如何用Python正则表达式提取单词中所有连续5字符组合?

如何用正则提取字符串中所有连续重叠的5字符组合

嘿,我来帮你搞定这个问题~

首先得搞明白你原来的代码为啥只返回不重叠的结果:正则引擎默认是**“消耗式匹配”**——当它匹配到一段字符后,就会把这些字符标记为“已处理”,下一次匹配会从这段字符的末尾开始。比如你的例子里,"stackoverflow"的前5个字符"stack"被匹配后,引擎指针直接跳到第6个字符"o",所以下一次只能匹配从"o"开始的"overf",中间的重叠组合就被跳过了。

不过你的需求完全可以用正则实现,核心是用正向预查(Positive Lookahead),它的特点是「只检查条件,不消耗字符」,这样引擎指针就不会移动,能让我们从每个位置都检查后面的5个字符。

解决代码

import re
word = "stackoverflow"
result = re.findall(r"(?=(.....))", word)
print(result)

运行这段代码,你就能得到期望的结果:
['stack', 'tacko', 'ackov', 'ckove', 'kover', 'overf', 'verfl', 'erflo', 'rflow']

正则原理解释

  • (?=(.....)) 是正向肯定预查结构:
    1. (?=...) 表示“检查当前位置后面是否存在符合...的内容”,但不会把这些内容标记为已匹配(也就是不消耗字符)。
    2. ..... 匹配任意5个字符(如果需要限定字符类型,可以换成\w{5}之类的规则)。
    3. 把.....放在括号里是为了捕获这个5字符组合,这样re.findall就能提取出我们需要的内容。

这样,正则引擎会从字符串的第一个字符位置开始,检查后面的5个字符并捕获,然后指针停在原位置,下一次匹配直接移动到下一个字符位置,重复这个过程,直到剩下的字符不足5个为止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:42:50