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

如何用Python正则表达式获取字符串中全部相邻双字符序列?

解决正则匹配相邻重叠字符对的问题

嘿,这个问题我之前踩过坑!你用re.findall(r'..', 'hello')得到['he', 'll']是因为正则默认是不重叠匹配的——它匹配完he之后,会跳过这两个字符,从第三个字符l开始继续匹配,自然就漏掉了el和lo这些相邻的重叠组合。

要实现你想要的重叠相邻字符对,我们可以利用正则的零宽正向先行断言来实现,它不会消耗匹配到的字符,让我们能逐个位置检查相邻的两个字符。

可行的代码实现

import re
result = re.findall(r'(?=(..))', 'hello')
print(result)  # 输出: ['he', 'el', 'll', 'lo']

正则原理解释

  • (?=(..)) 是正向先行断言,它的作用是:检查当前位置后面是否存在两个字符,然后通过括号捕获这两个字符。
  • 因为先行断言是零宽度的(不会移动匹配指针),所以匹配完当前位置的字符对后,下一次匹配会从当前位置的下一个字符开始,这样就能依次捕获所有相邻的重叠字符对了。

补充说明

如果你用的是Python 3.7及以上版本,也可以用后行断言来实现:

result = re.findall(r'(?<=.).', 'hello')
print(result)  # 同样输出: ['he', 'el', 'll', 'lo']

这个正则的逻辑是:匹配当前字符,且当前字符前面有一个字符,这样也能捕获所有相邻的两个字符组合。不过先行断言的写法兼容性更好一些。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:05:15