【问题标题】:replace single line javascript comments with multiline style comments in Notepad++ using regular expressions使用正则表达式在 Notepad++ 中用多行样式注释替换单行 javascript 注释
【发布时间】:2014-12-08 06:50:19
【问题描述】:

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

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

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

问题:

  1. 如果// some comment goes here 之前至少有一个空格,它只会找到// 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"> 之类的东西会有问题,我想我必须手动处理这些问题。

这并不是真正的 Notepad++ 问题。我确信使用任何常规搜索和替换系统都会遇到同样的困难。

感谢所有建议。

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

【问题讨论】:

  • 怎么样:myString = ' // ';?

标签: regex replace comments notepad++


【解决方案1】:

快捷方式

使用这个正则表达式:

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

替换为:

/\*$1\*/

说明方式

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

2 - 大多数时候在 cmets 开始之前只有一个空格或换行符 (\n)。我把它作为一个回顾来确保。这样一来,URLsDOCTYPE 就不会被触动了。

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

更新

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

然后做一个全部替换

【讨论】:

  • 谢谢雷沃。 Notepad++ 有一些奇怪的行为,它似乎间歇性地找不到/替换相同的 \\ 注释,我需要对此进行进一步的实验。如何修改您的正则表达式,以便 \\ 前面的非空白字符仍然可以找到注释。我尝试了一段时间,找到了这样的评论,但也找到了 URLS 和 DOCTYPE 但找不到评论是否前面有新行。请看regex101.com/r/xG4eQ5/2
  • @user1558796 使用在线正则表达式测试器时,您必须使用g 标志来查看所有匹配项Check it。同样在 Notepad++ 中也不需要转义斜杠。我用图片更新了我的答案。
  • 感谢 revo,您为此付出了很多努力。如果我有一个 // 类型的注释与 ; 或其他字符对接,那么搜索替换将不起作用。有什么解决方法吗?再次感谢。
  • @user1558796 你能举一个它不起作用的例子吗?
  • revo,在这个regex101.com/r/xG4eQ5/5 中找不到;//comment//comment 的行。
【解决方案2】:

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

【讨论】:

  • M42,Esprima 很有意思,之前没听说过。但是我没有找到一种方法来使用它将 // cmets 更改为 /* */ cmets。谢谢
猜你喜欢
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 2014-04-18
  • 2012-05-18
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
  • 2010-10-13
相关资源
最近更新 更多