Visual Studio代码:正则表达式以...开头但不以

Gol*_*Age 2 regex visual-studio-code

Visual Studio Code使用ripgrep 搜索文件,这不支持环视和反向引用.

我想构建一个表达式,它返回以给定字符串开头并且不以给定字符串结尾的所有短语,例如:

以" http://blah.com" 开头但不以" .htm" 结尾

火柴:

http://blah.com/tmp
Run Code Online (Sandbox Code Playgroud)

不匹配:

http://blah.com/tmp.htm
blah.com/tmp.htm
Run Code Online (Sandbox Code Playgroud)

Mar*_*ark 5

在您的设置中(启用前瞻):

 "search.usePCRE2": true
Run Code Online (Sandbox Code Playgroud)

你的正则表达式(使用否定前瞻):

blah\.com(?!.*\.htm$)
Run Code Online (Sandbox Code Playgroud)

[编辑]添加了$如果您绝对想要排除不以该结尾的匹配,而.htm不是仅仅跟随字符串中的某个位置.htm.

v1.29发行说明:

现在还可以通过设置"search.usePCRE2":true来在正则表达式搜索中使用反向引用和先行断言.这会将ripgrep配置为使用PCRE2正则表达式引擎.虽然PCRE2支持许多其他功能,但我们只支持在JavaScript中仍然有效的正则表达式,因为仍然使用编辑器的基于JavaScript的搜索来搜索开放式编辑器.

正面和负面的前瞻反向引用.

另请注意,之前的解决方案已被弃用:

// Deprecated. Consider "search.usePCRE2" for advanced regex feature support.
// This setting is deprecated and now falls back on "search.usePCRE2".

"search.useRipgrep": false
Run Code Online (Sandbox Code Playgroud)