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

如何使用正则表达式匹配无标点文本中的全部相邻滑动单词对

正则调整方案

问题原因

原来的(\w+) +(\w+)采用字符消费式匹配:完成hello dear的匹配后,正则引擎的扫描指针会直接移动到dear的末尾,剩余仅world一个单词无法满足双单词匹配规则,因此只能输出首个相邻对。

解决方案

使用PCRE正则的正向零宽先行断言实现滑动窗口效果,断言匹配过程不会消耗字符,可让扫描指针每匹配完一组仅前进一个单词的长度,实现所有相邻对的捕获。

调整后命令

echo "hello dear world" | grep -Po '(?=(\b\w+ +\w+))\b\w+'

输出结果

hello dear
dear world

说明

  • 替换-E参数为-P:POSIX扩展正则不支持零宽断言,需启用PCRE正则支持
  • 正则逻辑:
    • (?=...):正向零宽先行断言,仅检查后续内容匹配规则,不消耗扫描位置的字符
    • (\b\w+ +\w+):捕获完整的相邻单词对,\b保证匹配完整单词边界
    • 末尾的\b\w+:控制扫描指针每次前进一个单词,避免同一位置重复匹配

多单词场景验证

输入4个单词的测试用例:

echo "a b c d" | grep -Po '(?=(\b\w+ +\w+))\b\w+'

输出:

a b
b c
c d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:45:00