2

多くのファイルを開いて//@public objectパターンを検索し、一致するものがない場合は、そのファイル内の//@public doc前にない JavaScript コメントをすべて削除する必要があります。

たとえば、次のようなものがあります。

//@public doc
    /**
     * @function
     * checks for specific conditions
     * specific variables
     */

そしてそれはそのままです。ただし、他のすべての JavaScript コメントは削除する必要があります。

そのための正規表現は何であり、それをどのように達成するのですか?

前もって感謝します。

その間、私は次の解決策を思いついた

    <fileset id="jsmvcdoc.fileset" dir="${doctempfolder}" includes="**/*.js">
        <not>
         <contains text="//@public object" casesensitive="no"/>
        </not>
    </fileset>

   <!-- JS Comments -->
   <replaceregexp match="(?!doc. +)/\*.+?\*/" replace="" flags="gs" byline="false">
        <fileset refid="jsmvcdoc.fileset"/>
   </replaceregexp>

//@public オブジェクトを含まないファイルのみを含むファイルセットをフィルター処理しますが、//@public doc 行が前にあるコメントを除くすべてのコメントを削除する正規表現を作成する方法がわかりません

このように解決しました:

<!-- strip out js comments not preceeded by //@public doc -->
  <replaceregexp match="(?&lt;!//@public doc\x0D\x0A    )/\*.+?\*/" replace="" flags="gs" byline="false">
        <fileset refid="jsmvcdoc.fileset"/>
  </replaceregexp>
4

1 に答える 1

2

私はこのようにそれを分解します:

  1. パターンを含むファイルを選択します。
  2. 特定の正規表現で置換タスクを実行します。

何かのようなもの

<replaceregexp byline="true">
  <regexp pattern="/\*[\d\D]*?\*/"/>
    <substitution expression=""/>
       <fileset dir="${JSfiles.path}" includes="**/*.js">
          <contains text="//@public object" casesensitive="no"/>
       </fileset>
</replaceregexp>

私はそれをテストしていないので、正規表現を少し調整する必要があるかもしれません.

于 2012-09-06T05:21:02.120 に答える