1

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

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

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

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

跳过选择类似的东西:

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

但我需要在 <%-- 和 // 之间有任意数量的(包括没有)空格

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

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

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

我在某处读到 \s* 可用于可选的空白字符,但我似乎无法找出正确的语法来使其工作,将其用作后面查看的一部分(或者如果可能的话?)

4

1 回答 1

0

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

两步版本也可以吗?

  1. 删除先前的嵌套注释开始:将 <%--\s*// 替换为 <%--
  2. 将剩余的 //comments 转换为 Grails 符号。

(编辑)

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

搜索

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

用。。。来代替

<%-- \2 --%>

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

如果没有,试试这个:

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

替换为相同的。

于 2013-07-11T21:44:53.747 回答