使用正则表达式在Notepad ++中用多行样式注释替换单行javascript注释

时间:2014-10-13 16:20:21

标签: regex replace comments notepad++

我想使用Notepad ++搜索包含一些javascript的javascript文件或html文件,并用多行样式注释替换所有单行注释。

例如// some comment goes here替换为/* some comment goes here */

使用Notepad ++搜索并替换为使用(//.*)(\r\n)选择的正则表达式进行搜索,\/*\1\*/\r\n有点工作。

问题:

  1. 如果在//之前至少有一个空格,如果前面有一个标签,或者在行的开头或者有一个字母/数字,它只会找到// some comment goes here在它之前。我可以通过首先执行全局非正则表达式搜索替换来替换所有出现的// space //
  2. // some comment goes here替换为/*// some comment goes here*/,即两个正斜杠未被替换。之后我可以通过执行全局非正则表达式搜索来解决此问题,以/*//替换/*的所有实例。
  3. javascript可能位于html文件中,在这种情况下,文件中某处可能会显示http://msdn.microsoft.com/,我不希望将其替换为http:/*msdn.microsoft.com/*/我可以解决这个问题事先将所有://替换为:/ZZZ/,其中ZZZ是一种转义方法,然后将:/ZZZ/替换为://
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">之类的问题会出现问题我想我必须手动照看这些问题。
  5. 这不是一个Notepad ++问题。我确信使用常规搜索和替换系统会遇到同样的困难。

    感谢所有建议。

    感谢您抽出宝贵时间阅读本文

2 个答案:

答案 0 :(得分:3)

快捷方式

使用此正则表达式:

(?<=\s)//([^\n\r]*)

替换为:

/\*$1\*/

解释方式

1 - 双斜杠 // 不会替换,因为你在那个捕获组中有它们。因此,您将再次捕获并替换它们。

2 - 大部分时间在评论开始之前只有空格或换行符(\ n)。我把它作为一个外观来确保。通过这种方式, URL DOCTYPE 将不会被触及。

*我不确认这种搜索和替换方法,但它可能适用于大多数情况。

更新

注意设置。您应该将光标放在文件内容的最开头。

enter image description here

然后执行全部替换

enter image description here

答案 1 :(得分:1)

这不是正则表达式的工作,而是使用解析器。例如,请查看:Esprima