Regex将JavaScript注释替换为Grails注释

Regex to replace JavaScript comments with Grails comments

本文关键字:注释 Grails 替换 Regex JavaScript      更新时间:2023-09-26

我的目标是删除所有呈现为HTML的JavaScript注释。

在Grails中,您可以使用<%-comment--%>样式的注释不会出现在HTML输出中,所以我正在尝试想出一个可以用来匹配任何JS注释的表达式。我遇到的问题是,有些评论已经被<%--->

我可以使用带有否定外观的regex,如:

 (?<!<%-- )//(.*)

跳过选择以下内容:

 <%-- // some comment --%>

但是我需要在<%-和//

例如,regex还需要跳过:

 <%--// some comment --%>
 <%--     // some comment --%>

关于如何做到这一点,有什么想法吗?我承认,在正则表达式方面,我有点业余。

我在某个地方读到''s*可以用于可选的空白字符,但我似乎无法找到正确的语法来使其工作,将其作为后备(或者如果可能的话?)

您在查找背后的''s*想法不起作用,因为在大多数(如果不是全部)GREP版本中,您不能使用可变长度的查找背后。

两步版本也可以吗?

  1. 删除以前的嵌套注释开始:替换<%--''s*//带有<%--
  2. 将剩余的//注释转换为Grails表示法

(编辑)

啊,格林的奇迹。经过一点横向思考:

搜索

(<%--'s*)?//'s*(.+?)('s*--%>)?$

更换为

<%-- '2 --%>

这假设GREP方言理解非贪婪修饰符表达式(.+?)——在这种情况下,有必要防止吞噬结束序列"-->>"(毕竟,这是可选的),并在输出中加倍。

如果没有,试试这个:

(<%--'s*)?//'s*(((?!--%>).)*)(--%>)?

用相同的替换。