繁体   English   中英

用蚂蚁脚本替换regexp

[英]replaceregexp with Ant Script

我对replaceregexp有一些问题。 为了更容易理解,我将使用简单的示例,而不是真实的代码。

因此,假设我有2个Java文件:

firstClass.java

/**
 * UNDESIRABLE COMMENTS ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ
 * ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ
 */
public class firstClass{
    public String firstFunction(){
         <instructions>
    }

    /**
    * My function's description that I want to keep
    */
    public String secondFunction(){
         <instructions>
    }
}

secondClass.java

/**
 * UNDESIRABLE COMMENTS ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ
 * ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ
 */
public class secondClass{
    public String firstFunction(){
         <instructions>
    }
}

因此,我想删除项目中每个java文件的“不必要的注释”部分,但我想使用ANT来完成此操作,而不是手动进行。 为此,我正在使用此:

<replaceregexp flags="s">
    <regexp pattern="UNDESIRABLE COMMENTS.+\*/"/>
    <substitution expression="*/"/>
    <fileset dir=".">
        <filename name="*.java"/>
    </fileset>
 </replaceregexp>

我想要的是获取此代码:

firstClass.java

/**
 */
public class firstClass{
    public String firstFunction(){
         <instructions>
    }

    /**
    * My function's description that I want to keep
    */
    public String secondFunction(){
         <instructions>
    }
}

secondClass.java

/**
 */
public class secondClass{
    public String firstFunction(){
         <instructions>
    }
}

它对secondClass.java很好用,但对第一个文件却不好。 当还有其他注释(例如功能说明)时,就会出现问题。 文件secondClass.java结果很好,但是在firstClass.java中,我得到了以下信息:

/**
    */
    public String secondFunction(){
         <instructions>
    }
}

从“不必要的注释”开始到第二个函数的描述结束之间的所有内容均被删除。

所以问题是:当我的replaceregexp找到更多* /时,它将在最后一个* /处停止,并删除“不必要的评论”和最后一个* /之间的所有内容。

您是否有任何解决方案,只需删除“不必要的评论”和找到的第一个* /之间的内容?

您的问题是正则表达式中的+量词是贪婪的 ,在匹配时将消耗尽可能的输入。 尝试

UNDESIRABLE COMMENTS.+?\*/

相反- +? 表示与+相同,但不愿意,即它会尽可能地匹配,同时仍会产生整个表达式的整体匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM