Visual Studio代码中的正则表达式:无效匹配失败,并出现“无法识别的标志”错误

时间:2018-09-03 12:15:36

标签: regex visual-studio-code

编辑:正如一些评论者所指出的,它应该是^class (?!Migration)[A-Z][a-z]*。但是VS Code抱怨:Error parsing regex near "ss (?!Migr' at character offset 9: Unrecognized flag: '!'. (Allowed flags: i, m, s, U, u, x.)

Visual Studio seems to support negative look aheads (see "Invalidate a match")。 VSCode是否支持该问题,找不到答案。


在VS Code中,我试图通过Shift+Command+F在Django项目中查找类定义。打开正则表达式搜索。现在我的搜索模式是这样:

^class [A-Z][a-z]*

因此将找到每次出现的“ Abc类”,其中Abc是类名。

现在我想排除类似class Migration(...)class Command(...)

的类

我试图用负前瞻来做到这一点,就像这样:

^class (!?Migration)[A-Z][a-z]*

但是那行不通。 VS Code将向我显示所有名为class Migration(...)的类,因此它会专注于它,而不是排除它。

我想念什么?

2 个答案:

答案 0 :(得分:1)

请注意,要使 lookaheads 起作用,您需要编辑 settings.json 文件以设置

"search.usePCRE2": true

请参见v1.29 release notes

  

现在也可以使用反向引用和超前断言   在正则表达式搜索中,通过设置"search.usePCRE2": true。这配置   ripgrep使用PCRE2正则表达式引擎。尽管PCRE2支持许多其他功能   功能,我们仅支持在以下情况下仍然有效的正则表达式   JavaScript,因为仍然使用编辑器的   基于JavaScript的搜索。

另外,请参见Mark's answer,他之前注意到了此选项。

然后,您的^class (?!Migration)[A-Z][a-z]*正则表达式将起作用。

enter image description here

答案 1 :(得分:0)

为此目的,请使用名为Reverse Search的Visual Studio代码扩展名