2011-06-24 6 views
4

が、私は次の正規表現使用して、すべての.htmlファイル内のすべての一致を見つけることができるようにしたいと思います。そして、Apache Ant:特定の正規表現のすべてのファイルを検索し、その一致をファイルに印刷できますか? Antのbuild.xmlの中

("|')((?!http://|#|mailto:|&|/)([^#\n\s\."])+?\.([^#\n\s"])+?)\1 

を、私は、ファイル内の\ 2のものと一致するものを一覧表示したいです。これは可能ですか?

最終結果、おかげで@bakoyaroします

<echo message="Collecting appcache files" /> 
    <concat destFile="your_output_file"> 
     <fileset dir="./${dir.publish}"> 
      <include name="**/*.html"/> 
     </fileset> 
     <filterchain> 
      <linecontainsregexp> 
       <regexp pattern="(.)*?(&quot;|')((?!http://|\?|#|mailto:|\1)([^#\n\s\.&quot;'?])+?\.([^#\n\s&quot;'?])+?)\2" /> 
      </linecontainsregexp> 
      <tokenfilter> 
       <replaceregex pattern="(.)*?(&quot;|')((?!http://|\?|#|mailto:|\1)([^#\n\s\.&quot;'?])+?\.([^#\n\s&quot;'?])+?)\2" flags="g" replace="\1\2\3\2${line.separator}" /> 
      </tokenfilter> 
      <linecontainsregexp> 
       <regexp pattern="(.)*?(&quot;|')((?!http://|\?|#|mailto:|\1)([^#\n\s\.&quot;'?])+?\.([^#\n\s&quot;'?])+?)\2" /> 
      </linecontainsregexp> 
      <tokenfilter> 
       <replaceregex pattern="(.)*?(&quot;|')((?!http://|\?|#|mailto:|\1)([^#\n\s\.&quot;'?])+?\.([^#\n\s&quot;'?])+?)\2" flags="g" replace="\3" /> 
      </tokenfilter> 
      <linecontainsregexp> 
       <regexp pattern="((?!http://|\?|#|mailto:|\1)([^#\n\s\.&quot;'?])+?\.([^#\n\s&quot;'?])+?)" /> 
      </linecontainsregexp> 
     </filterchain> 
    </concat> 

答えて

1

あなたは、ネストされたFilterChainConcatタスクを使用してこれを行うことができるはずです。

このような何か:ここ

<concat destFile="your_output_file"> 
    <fileset dir="WebContent"> 
     <include name="**/*.html"/> 
    </fileset> 
    <filterchain> 
     <linecontainsregexp> 
      <regexp pattern="your_pattern_to_match" /> 
     </linecontainsregexp> 
     <tokenfilter> 
      <replaceregex pattern="your_pattern_to_extract" replace="output_required" /> 
     </tokenfilter> 
    </filterchain> 
</concat> 
+0

これは実際に一致トークンを「取得」して出力することができますか? –

+1

これは、concatタスクで指定されたdestFileに一致を出力します。または、destFile属性を指定しないでconcatを使用すると、コンソールに出力されます。ソリューションがすべての要素(concat、filterchain、linecontainsregexp、tokenfilter)を使用していたので、これは役に立ちました。 – sudocode

+0

はい、明らかに間違った答えを確認しました。私は本当にSOがそれらをいかに動かすか嫌いです。 –

2

は、それはあなたの正規表現に一致するファイルのいずれかを含む.zipファイルを作成します助けるかもしれないスニペットです。私は自分のビルドを調べて、すべてのアリトークンが確実に置き換えられるようにします。

<zip destfile="${your_file_name}" update="true" whenempty="skip"> 
      <fileset dir="${your_search_directory}"> 
        <!-- your file pattern --> 
        <include name="**/*.html" /> 
        <!-- this will destroy an executable file. best to exclude them --> 
       <exclude name="**/*.jar" /> 
       <containsregexp expression="your_regex_to_match" /> 
      </fileset> 
     </zip> 
+0

私は置き換えようとしていません - トークンを収集し、トークンをテキストファイルに配置するだけです。 –

+0

いくつかの変更を加えれば、これはうまくいった!あなたの専門知識のために多くをありがとう。これは本当にAntにもっと関心を寄せてくれました。 –

+0

それはあなたのために働いてうれしい! – bakoyaro

関連する問題