我的目标是删除所有呈现给HTML的JavaScript注释。
在Grails中,您可以使用<% - comment - %>样式注释不会在HTML输出中结束,所以我试图想出一个我可以用来匹配任何JS注释的表达式。我遇到的问题是某些评论已经包含在<% - - %>
中我可以使用带有负面外观的正则表达式,如:
(?<!<%-- )//(.*)
跳过选择类似的内容:
<%-- // some comment --%>
但我需要在&lt;% - 和//
之间有一个任意数量(包括没有)空格例如,正则表达式也需要跳过:
<%--// some comment --%>
<%-- // some comment --%>
关于如何实现这一目标的任何想法?我承认,在正则表达方面,我有点像业余爱好者。
我在某处读到了\ s *可以用于可选的空格字符,但是我似乎无法找出正确的语法,使它可以使用它作为后面的一部分(或者如果可能的话? )
答案 0 :(得分:0)
在lookbehind中你的想法不起作用,因为在大多数(如果不是全部)GREP版本中,你不能使用可变长度的lookbehind。
两步版本还可以吗?
(编辑)
啊,GREP的奇迹。经过一番横向思考后:搜索
(<%--\s*)?//\s*(.+?)(\s*--%>)?$
替换为
<%-- \2 --%>
这假设你的GREP方言理解非贪婪的修饰语表达式(。+?) - 在这种情况下,有必要防止吞噬结束序列“ - %&gt;” (毕竟,这是可选的),并在输出中加倍。
如果没有,请尝试:
(<%--\s*)?//\s*(((?!--%>).)*)(--%>)?
替换为相同的。