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

I would break it down in this way:

  1. Select files which contain the pattern.
  2. Run replace task on the specific regex.

Something like

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

I have not tested it , so you might need to tweak the regex a bit.

于 2012-09-06T05:21:02.120 回答