范例 |
正则表达式范例 |
数字范围 |
浮点数 |
电子邮件地址 |
IP 地址 |
有效日期 |
数字日期转换为文本 |
信用卡号码 |
比对整行 |
删除重复列 |
编程 |
两个相邻的字词 |
陷阱 |
灾难性的回溯 |
过多重复 |
拒绝服务 |
让所有内容都可选 |
重复捕获组 |
混合 Unicode 和 8 比特 |
本网站上的更多内容 |
简介 |
正则表达式快速入门 |
正则表达式教程 |
替换字符串教程 |
应用程序和语言 |
正则表达式范例 |
正则表达式参考 |
替换字符串参考 |
寻找两个相邻的字词
有些使用布尔操作符的搜索工具也有一个称为「相邻」的特殊操作符。搜索「字词1 相邻 字词2」会找出所有在彼此「距离」范围内出现字词1 和字词2 的结果。距离是字词数。实际数字取决于搜索工具,而且通常可以设置。
您可以轻松地使用适当的正则表达式运行相同的任务。
使用正则表达式仿真「相邻」
使用正则表达式,你可以描述几乎任何文本模式,包括符合两个相邻单字的模式。这个模式相对简单,由三部分组成:第一个单字、一定数量的未指定单字,以及第二个单字。未指定的单字可以用 简写字符类别 \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(word1|word2|word3)(?:\W+\w+){1,6}?\W+(word1|word2|word3)\b
最后的正则表达式也会找出一个单字附近的单字。例如,它会符合 word2 near word2
。