正则表达式 - 记事本++ - 查找包含一个字符串但不包含另一个字符串的字符串

4
我帮不了你解决这个问题: 我有一个文本文件,其中有一些条目类似于“user = ABname”。 我想搜索所有包含用户ID且不以“AB”或“ab”开头的行,并且我需要使用Notepad++的搜索功能来进行正则表达式搜索。 我尝试使用:
user = ^[ab]

但实际上并没有按预期工作。

我应该找到所有这些内容:

user = CDname1
user = cdname2
user = acname3
user = xbname4

但是不包括
user = abname1
user = ABname2
4个回答

6

尝试使用负向先行断言:

user = (?![aA][bB]).*

你误解了字符类的工作原理。字符类 - [ab] 只匹配方括号中出现的所有字符中的一个字符。因此,它将匹配 ab 中的任何一个。它不会按顺序匹配 ab。基本上,[ab]a|b 相同。

5
你需要使用负向先行断言,例如:
^user = (?![Aa][Bb])

0

您可以使用这个:

 user = (?:[^a]|a(?!b))\S+

(不要勾选大小写不敏感的框,但要勾选正则表达式框:)


0
尝试:^user = ([aA][^bB].*|[^a].*) 它查找user =,然后是a后面跟任何不是b的字符或“任何不以a开头”的字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接