簡體   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