RegEx - 排除包含要匹配的字符串的指定字符串列表

问题描述 投票:0回答:1

排除包含要匹配的字符串的指定字符串列表

匹配任何包含 SON 的字符串 - 即 SON、SONAR、JSON、SON-O-GRAM、_SON

同时排除 GRANDSON 和 SONY 以及列表中的任何其他字符串

我无法同时实现两者。是否可以以某种方式优先考虑排除组而不是匹配模式?

我正在寻找适用于 NP++ 和类似的 ctrl+f 搜索的简单解决方案。

regex full-text-search notepad++
1个回答
0
投票

实现此目的的快速方法是使用控制动词 (*SKIP) (*FAIL)。

首先,您将提供您不想匹配的内容作为要匹配的内容,并告诉系统跳过这些内容,但在文本的其余部分中进行匹配。

演示

根据您的示例,您最终会得到这样的模式:

在 Notepad++ 中粘贴,不带开始和结束分隔符,即 /

/\b(?:GRANDSON|SONY)\b(*SKIP)(*FAIL)|\S*SON\S*/

\SSON\S :含义匹配任何非空格字符0次或多次,然后字母SON和任何非空格字符再次匹配0次或多次。

将其更改为 [a-z_]SON[a-z_] 等,如果您想具体说明要匹配的内容,即每一侧的字母或下划线

在 Notepad++ 中,测试前请确保已选择“正则表达式”搜索模式。

© www.soinside.com 2019 - 2024. All rights reserved.