我有一个任务,我必须打开许多文件,搜索//@public object
模式,如果没有匹配项,请删除该文件中所有之前没有//@public doc
的JavaScript注释。< / p>
例如,可能有类似的内容:
//@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对象的文件,但是我不知道如何制作regexp,它将删除所有注释除了行// @ public doc
之前的注释解决这个问题:
<!-- strip out js comments not preceeded by //@public doc -->
<replaceregexp match="(?<!//@public doc\x0D\x0A )/\*.+?\*/" replace="" flags="gs" byline="false">
<fileset refid="jsmvcdoc.fileset"/>
</replaceregexp>
答案 0 :(得分:2)
我会以这种方式将其分解:
像
这样的东西<replaceregexp byline="true">
<regexp pattern="/\*[\d\D]*?\*/"/>
<substitution expression=""/>
<fileset dir="${JSfiles.path}" includes="**/*.js">
<contains text="//@public object" casesensitive="no"/>
</fileset>
</replaceregexp>
我还没有测试过,所以你可能需要调整一下正则表达式。