正则表达式用Grails注释替换JavaScript注释

时间:2013-07-11 20:35:38

标签: javascript regex grails

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

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

我可以使用带有负面外观的正则表达式,如:

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

跳过选择类似的内容:

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

但我需要在&lt;% - 和//

之间有一个任意数量(包括没有)空格

例如,正则表达式也需要跳过:

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

关于如何实现这一目标的任何想法?我承认,在正则表达方面,我有点像业余爱好者。

我在某处读到了\ s *可以用于可选的空格字符,但是我似乎无法找出正确的语法,使它可以使用它作为后面的一部分(或者如果可能的话? )

1 个答案:

答案 0 :(得分:0)

在lookbehind中你的想法不起作用,因为在大多数(如果不是全部)GREP版本中,你不能使用可变长度的lookbehind。

两步版本还可以吗?

  1. 删除先前嵌套的评论开始:将&lt;% - \ s * //替换为&lt;% -
  2. 将剩余的//评论转换为Grails表示法。
  3. (编辑)

    啊,GREP的奇迹。经过一番横向思考后:

    搜索

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

    替换为

    <%-- \2 --%>
    

    这假设你的GREP方言理解非贪婪的修饰语表达式(。+?) - 在这种情况下,有必要防止吞噬结束序列“ - %&gt;” (毕竟,这是可选的),并在输出中加倍。

    如果没有,请尝试:

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

    替换为相同的。