2013-07-11 26 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*(((?!--%>).)*)(--%>)? 

可用相同。