Sublime Text 2 - 正则表达式搜索 - 非捕获组语法

TCA*_*n07 3 regex search replace sublimetext2

我正在尝试在搜索和替换中使用ST2的正则表达式功能,但无法弄清楚如何制作非捕获组.对于这个例子,我想找到"DEAN"的实例,后面没有 "UMBER",即区分"DEANCARE"和"DEANUMBER"

根据我过去阅读和使用的内容,非捕获的语法应该是:

DEAN(?:UMBER)
Run Code Online (Sandbox Code Playgroud)

哪个应该匹配"DEANCARE"而不是 "DEANUMBER".相反,Sublime Text 发现"DEANUMBER",好像我输入了:

DEAN(UMBER)
Run Code Online (Sandbox Code Playgroud)

在第一个(或每个)不需要的字母上使用方括号确实有效:

DEAN[^U] 
Run Code Online (Sandbox Code Playgroud)

但是我仍然倾向于使用组不匹配而不是其他目的,并且避免必须明确地不匹配每个单独的字符.我是否有语法错误,或ST2的正则表达式如何工作的概念错误?

rva*_*vik 8

非捕获组与组相同,除了它不在后引用中捕获正则表达式的匹配部分.

如果你DEAN(?:UMBER)在字符串上使用正则表达式DEANUMBER然后你会有一个匹配,但引用\1,例如搜索和替换将不会给你任何东西,因为该组是非捕获的.

使用DEAN(UMBER)在另一方面,你可以做一个搜索,取而代之的made of L\1将产生made of LUMBER,因为第一(捕获)组的比赛是由回引用\1.这当然是一个非常毫无意义的例子,如果你想了解更多关于群组和反向引用的建议,我建议你阅读这个或其他文档/关于这个问题的文章.

正如评论中所建议的那样,你想要的是一个消极的前瞻.