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

如何使用正则表达式匹配重叠模式:提取连续双词组合

提取下划线分隔字符串的连续双词组合

嘿,这个需求用正则的**正向预查(positive lookahead)**就能完美解决,我给你一步步讲清楚怎么实现:

核心思路

因为我们需要提取重叠的连续双词(比如word2同时属于word1_word2和word2_word3),常规的正则匹配会消耗字符导致无法重叠捕获,而正向预查只会检查后续字符是否符合规则,不会移动匹配指针,刚好能满足这个需求。

正则表达式

针对你的输入格式,最直接的正则是:

(?=(\w+_\w+))

如果你的"词"可能包含\w(字母、数字、下划线)之外的字符(比如连字符、点),可以把\w换成[^_]+(匹配任意非下划线字符),也就是:

(?=([^_]+_[^_]+))

实际使用示例

以Python为例,用re.findall()就能直接获取所有匹配结果:

import re
input_str = "apple_banana_cherry_date"
matches = re.findall(r'(?=(\w+_\w+))', input_str)
print(matches)
# 输出: ['apple_banana', 'banana_cherry', 'cherry_date']

为什么这么写?

  • (?=...):正向预查,告诉正则引擎"当前位置后面必须符合括号内的规则,但不要消耗这些字符",这样引擎会逐个位置检查,就能捕获到所有重叠的双词组合。
  • (\w+_\w+):捕获组,匹配"一个或多个单词字符 + 下划线 + 一个或多个单词字符",也就是我们要的双词组合。
  • 如果输入只有单个词(比如"hello"),正则不会返回任何结果,完全符合需求。

内容的提问来源于stack exchange,提问作者ohad.k.k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:30:38