簡體   English   中英

Java正則表達式部分替換

[英]java regular expression partial replace

我正在處理一些具有靜態方法調用的舊代碼,我們需要將其從源代碼樹中刪除。

現有代碼如下:

Logger.getInstance(JdkUtil.forceInit(SomeBusiness.class));

我們最終需要做的是:

Logger.getInstance(SomeBusiness.class);

我今天整整花費了整整一天的時間來弄清楚如何進行替換。 由於我對正則表達式的經驗很少,因此我只能提出一種與源字符串匹配的模式。

模式JdkUtil.forceInit([a-zA-Z_0-9] *。class)在我提供的輸入字符串上找到匹配項。 我已經在https://www.freeformatter.com/java-regex-tester.html上對此進行了測試

因此,如果任何人都可以為此發布Java解決方案,我將不勝感激。

下面是我到目前為止擁有的一些Groovy代碼。 我所缺少的是如何正確解釋上述替換。

String source = 'Logger.getInstance(JdkUtil.forceInit(RtpRuleEngineCompiledImpl.class))'
    String regexpPattern = 'JdkUtil.forceInit\\([a-zA-Z_0-9\\)]*.class\\)'

    String replaced = source.replaceFirst(regexpPattern, 'hello')

    println replaced

當我運行上面的代碼時,我得到以下輸出:

Logger.getInstance(你好)

顯然,“ hello”僅用於測試。

在此先感謝任何可以給我一些建議的人。

您可能會想要執行以下操作:

class StackOverflow {
    public static void main(String[] args) {
        String source = "Logger.getInstance(JdkUtil.forceInit(RtpRuleEngineCompiledImpl.class))";
        String regexpPattern = "JdkUtil.forceInit\\(([a-zA-Z_0-9]*.class)\\)";
        String replaced = source.replaceFirst(regexpPattern, "$1");
        System.out.println(replaced);
    }
}

結果

Logger.getInstance(RtpRuleEngineCompiledImpl.class)

捕獲組( $1 )替換括號內的整個字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM