使用负回顾后发 VSCode 内部正则表达式搜索

4

在VSCode中,尝试搜索print(print ( - 但仅当后面不跟随#时。

这是我第一次在VSCode中尝试使用正则表达式搜索...

示例:
print ('测试一') - 匹配
print( '测试二') - 匹配
#print('测试三') - 跳过

这个问题中我了解到,VSCode缺少负回顾。

通常,在^F(搜索功能)中,我会使用类似以下未经测试的内容:

/w*(?<!#)print

但是我收到了无效正则表达式的错误信息。

有人可以提供一个解决方法吗?还是说我只是输错了正则表达式?


首先,让我们在regex101上玩一下,尝试使用 ^\s*print\s*\(,请参见https://regex101.com/r/cMM5QU/2。它是否符合您的预期? - Wiktor Stribiżew
请注意,我已删除上面模式中的(?!#),因为它似乎是多余的。 - Wiktor Stribiżew
2个回答

6

更新说明:从 VS Code 1.31 开始,支持无限宽度回顾后发表达式

然而,在当前情况下,您不必使用基于回顾后发表达式的解决方案,您可以使用

^\s*print\s*\(

请参见正则表达式演示
请注意,如果只想匹配同一行上的文本,则将\s替换为[ \t][^\S\n]可能是更好的选择。 详细信息
  • ^ - 行的开头
  • \s* - 0个或多个空格
  • print - 文字字面意思
  • \s* - 0个或多个空格
  • \( - (字符(必须转义才能匹配一个字面上的()。
注意:实际上VSCode仍支持先行断言,但您需要启用search.usePCRE2选项

0

如果你想要使用负向先行断言,你可以使用这个 VS Code 扩展 Reverse Search


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