快速入门
教程
工具和语言
示例
参考
书评
示例
正则表达式示例
数字范围
浮点数
电子邮件地址
IP 地址
有效日期
数字日期转文本
信用卡号
匹配完整行
删除重复行
编程
两个相邻单词
陷阱
灾难性回溯
重复次数过多
拒绝服务
使所有内容可选
重复捕获组
混合 Unicode 和 8 位
本网站上的更多内容
简介
正则表达式快速入门
正则表达式教程
替换字符串教程
应用程序和语言
正则表达式示例
正则表达式参考
替换字符串参考
书评
可打印 PDF
关于本网站
RSS 源和博客
RegexBuddy—The most comprehensive regular expression library!

查找彼此相邻的两个单词

一些使用布尔运算符的搜索工具还具有一个称为“near”的特殊运算符。搜索“term1 near term2”会查找彼此相距一定“距离”的 term1 和 term2 的所有出现。距离是以单词为单位的数字。实际数字取决于搜索工具,并且通常是可配置的。

您可以使用正确的正则表达式轻松执行相同的任务。

使用正则表达式模拟“near”

使用正则表达式,你可以描述几乎任何文本模式,包括匹配两个相邻单词的模式。此模式相对简单,由三部分组成:第一个单词、一定数量的未指定单词和第二个单词。未指定单词可以使用 速记字符类 \w+ 匹配。单词之间的空格和其他字符可以使用 \W+ 匹配(这次使用大写 W)。

完整的正则表达式变为 \bword1\W+(?:\w+\W+){1,6}?word2\b量词 {1,6}? 使正则表达式要求“word1”和“word2”之间至少有一个单词,最多允许六个单词。

如果单词也可能以相反的顺序出现,我们还需要指定相反的模式

\b(?:word1\W+(?:\w+\W+){1,6}?word2|word2\W+(?:\w+\W+){1,6}?word1)\b

如果你想从单词列表中查找任意两个单词对,可以使用

\b(单词1|单词2|单词3)(?:\W+\w+){1,6}?\W+(单词1|单词2|单词3)\b

最终的正则表达式还会找到一个单词附近的单词。例如,它将匹配单词2 附近的单词2