在Ant build.xml中,我希望能够使用以下正则表达式在所有.html文件中找到任何匹配项:
("|')((?!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="(.)*?("|')((?!http://|\?|#|mailto:|\1)([^#\n\s\."'?])+?\.([^#\n\s"'?])+?)\2" />
</linecontainsregexp>
<tokenfilter>
<replaceregex pattern="(.)*?("|')((?!http://|\?|#|mailto:|\1)([^#\n\s\."'?])+?\.([^#\n\s"'?])+?)\2" flags="g" replace="\1\2\3\2${line.separator}" />
</tokenfilter>
<linecontainsregexp>
<regexp pattern="(.)*?("|')((?!http://|\?|#|mailto:|\1)([^#\n\s\."'?])+?\.([^#\n\s"'?])+?)\2" />
</linecontainsregexp>
<tokenfilter>
<replaceregex pattern="(.)*?("|')((?!http://|\?|#|mailto:|\1)([^#\n\s\."'?])+?\.([^#\n\s"'?])+?)\2" flags="g" replace="\3" />
</tokenfilter>
<linecontainsregexp>
<regexp pattern="((?!http://|\?|#|mailto:|\1)([^#\n\s\."'?])+?\.([^#\n\s"'?])+?)" />
</linecontainsregexp>
</filterchain>
</concat>
答案 0 :(得分: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>
答案 1 :(得分:1)
您应该可以使用嵌套Concat的FilterChain任务执行此操作。
这样的事情:
<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>