1

HTML にレンダリングされるすべての JavaScript コメントを削除するという目標があります。

Grails では <%-- comment --%> スタイルのコメントを使用できますが、これは HTML 出力にはなりません。そのため、任意の JS コメントに一致させるために使用できる式を考え出そうとしています。私が抱えている問題は、いくつかのコメントがすでに <%-- --%> で囲まれていることです

次のような否定的な後ろ向きで正規表現を使用できます。

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

次のような選択をスキップするには:

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

<%-- と // の間に任意の量 (なしを含む) の空白が必要です。

たとえば、正規表現もスキップする必要があります。

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

これを達成する方法についてのアイデアはありますか? 正規表現に関しては、私が少し素人であることを認めます。

オプションの空白文字に \s* を使用できることをどこかで読みましたが、これをルック ビハインドの一部として使用して機能させるための適切な構文を理解できないようです (または、それが可能であれば?)

4

1 に答える 1

0

ほとんどの(すべてではないにしても)GREPバージョンでは、可変長の後読みを使用できないため、後読み内の \s* アイデアは機能しません。

二段バージョンでもいいですか?

  1. 以前のネストされたコメントの開始を削除します: <%--\s*// を <%-- に置き換えます
  2. 残りの // コメントを Grails 表記に変換します。

(編集)

ああ、GREP の素晴らしさ。横方向の思考のビットの後:

検索する

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

と置換する

<%-- \2 --%>

これは、GREP ダイアレクトが非貪欲な修飾子式 (.+?) を理解していることを前提としています。この場合、最後のシーケンス "--%>" (これはオプションです) を飲み込んで倍増するのを防ぐ必要があります。それを出力します。

そうでない場合は、これを試してください:

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

同じものに交換してください。

于 2013-07-11T21:44:53.747 に答える