如何使用正则表达式在Visual Studio代码中搜索仅匹配未注释的代码?

时间:2017-10-24 05:29:18

标签: regex search visual-studio-code

例如,我有以下几行:

//sys.log(siteNameToPrepare);
	//sys.log(siteNameToPrepare);
        // sys.log("downloadFolder: "+downloadFolder);
	// lorem ipsum ...
	arbitrary codes here...
	var a = _POST;
	sys.log("groupManagementHandler.jhp _POST is not object");
sys.log("groupManagementHandler.jhp _POST is not object");

我只想匹配未注释掉的sys.log(xxx)。 我试着使用以下正则表达式:

  

[^ /] sys.log

搜索栏上的

(Ctrl + Shift + F),使用Regex ON,在文件夹的文件中查找未注释的sys.log。

enter image description here

它匹配几个文件中未注释的行,但是,我错过了一些在sys.log前面有几个空格的行。

我的问题是如何匹配这些线?我在这里缺少什么?

好像我在Google和Stackoverflow中找不到答案,我找到了这个,但这个是针对Visual Studio而不是Visual Studio Code。 Visual Studio Search Uncommented Code

这是我使用前瞻模式得到的错误消息: enter image description here

感谢@WiktorStribiżew,现在我可以确认用于在文件中搜索的正则表达式超前模式适用于较旧的Visual Studio代码(V1.2.0),但在版本1.17.1中不起作用。

因此,由于较新版本VS代码的错误,这个问题可能在某种程度上被视为一个重复的问题,这导致我发布此问题。

1 个答案:

答案 0 :(得分:0)

对于想立即知道答案的人,这里是@Mark在我的问题的评论部分所建议的:

  1. 首先使用Ctrl + Shift + F
  2. 打开“在文件中搜索”字段
  3. 启用正则表达式功能(输入字段的最右侧按钮)
  4. 放下以下正则表达式:
      

    ^ \ S * sys.log

  5. 或此正则表达式也有效

      

    ^ [^ / \ n]的(?:/ [^ / \ N] +)* sys.log

    上述正则表达式适用于我的案例。

    在我得到这个答案之前,我们与@Tim和@Wiktor进行了讨论,他们都提出了一个前瞻性的正则表达式模式,并且该模式实际上适用于Visual Studio Code的旧版本(V.1.2.0)@Wiktor指出。但显然, 自V1.12.0版本以来,不再支持用于搜索文件的高级正则表达式功能。但是,如果使用Ctrl + F在文件中搜索,它仍然有效。

    感谢@Tim,@ Wiktor和@Mark帮助澄清了事情。