在使用正則表達式時,利用好其預編譯功能,可以有效加快正則匹配速度。修改解決辦法


阿里巴巴IDEA規約掃描插件可能在使用正則表達式時出現此提示,比如如下代碼:

public void addSyncConfigToCache(String configName, ESSyncConfig config) {
    ...
    Pattern pattern = Pattern.compile(".*:(.*)://.*/(.*)\\?.*$");
    Matcher matcher = pattern.matcher(dataSource.getUrl());
    //代碼來自阿里巴巴開源項目Canal
...

上面代碼就會出現問題提醒,我們展開提醒內容查看官方為我們的提示:

官方提醒:在使用正則表達式時,利用好其預編譯功能,可以有效加快正則匹配速度。 說明:不要在方法體內定義。

其實插件的意思是讓我們把這個信息抽取到方法外面使其觸發預編譯。

private static final Pattern pattern = Pattern.compile(regexRule);
 
private void func(...) {
    Matcher m = pattern.matcher(content);
    if (m.matches()) {
        ...
    }
}

這樣抽取出來就避免了多次編譯和使用時編譯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM