2013-07-11 27 views
1

我必须删除所有得到呈现出HTML的JavaScript注释的目标。正则表达式使用Grails取代JavaScript注释评论

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

我可以使用正则表达式背后负的样子:

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

跳过选择喜欢的东西:

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

但我需要有为任意的量(包括不含)的<%之间的空白 - 和//

例如,REG前需要也跳过:

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

有关如何完成此任何想法?我承认,在正则表达式方面,我有些业余爱好者。

我读了\ s *可以用于可选空格字符的地方,但我似乎无法弄清楚正确的语法使它能够作为背后的一部分使用它(或者如果可能的话?)一个回顾后不会在大多数(如果不是全部)GREP版本,因为在里面工作

+0

我可能失去了一些东西,但是,你为什么不只是更换'<! - '和'<% - '和' - >'和' - %>'使用两个内容替换? – Racso

+0

@Racso JavaScript comment!= HTML评论。 –

回答

0

你\ S *想法,你不能使用可变长度的回顾后。

是一个两步的版本还好吗?

  1. 删除以前的嵌套评论开始:更换<% - \ S * //与<% -
  2. 转换剩余//注释,你已经做了你的Grails的符号。

(编辑)

啊,GREP的奇迹。有点横向思维后:

搜索

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

替换

<%-- \2 --%> 

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

如果没有,试试这个:

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

可用相同。