【问题标题】:How to search in Visual Studio Code using regex to match only uncommented code?如何使用正则表达式在 Visual Studio Code 中搜索以仅匹配未注释的代码?
【发布时间】:2018-04-04 19:07:21
【问题描述】:

例如,我有以下几行:

//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) 上,打开正则表达式,在文件夹的文件中查找未注释的 sys.log。

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

我的问题是如何匹配这些行?我在这里错过了什么?

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

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

感谢@Wiktor Stribiżew,现在我可以确认用于在文件中搜索的正则表达式前瞻模式适用于旧版 Visual Studio Code (V1.2.0),但不适用于版本 1.17.1。

因此,由于较新版本的 VS 代码的错误,这个问题可能会被视为重复的问题,这导致我发布了这个问题。

【问题讨论】:

  • 给您的问题:注释掉的对sys.log 的调用是否总是紧跟在// 前面?注释掉行的方式有什么规律吗?
  • Artan,您的链接问题中的答案是^((?!//|/\*).)*VPEntity*$。你试过^((?!//|/\*).)*sys.log吗?
  • @TimBiegeleisen 并不总是紧跟在 // 前面,有时它有空格或制表符 (\t)
  • @WiktorStribiżew 这不是完全重复的问题,因为 Visual Studio 和 Visual Studio Code 不是同一个编辑器,它们的工作方式也不同。我试过了,但它给出了一个错误。

标签: regex search visual-studio-code


【解决方案1】:

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

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

    ^\s*sys.log

或者这个正则表达式也有效

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

上述正则表达式适用于我的情况。

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

感谢@Tim、@Wiktor 和@Mark,他们帮助澄清了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    相关资源
    最近更新 更多