簡體   English   中英

如果花費太長時間來匹配,如何在Java中超時或跳過任何匹配器(正則表達式)?

[英]How to timeout or skip any matcher(Regular Expression) in java if taking too long time to match?

在我的項目中,我使用正則表達式來匹配字符串。 這里的字符串是動態的,因此有時需要很長時間才能匹配字符串。 這是我的代碼( Keywords.p_resumeHeading是模式對象):

for (int k = 0; k < forcheck.length; k++) {
    Matcher m = Keywords.p_resumeHeading.matcher(forcheck[k].trim());
    if (m.find()) {

        //System.out.println("Resume heading hai ");
        finalresult = true;
        break;
    }
}

我有一個類似的情況,帶有“格式錯誤”的正則表達式。 最好的處理方法是用{x}限制組的重復,其中x是一個實際數字(5或10)可能就足夠了。 檢查http://www.regular-expressions.info/repeat.html以限制重復。

淘汰您的正則表達式,我不能更好地幫助您。

您可以考慮將Runnable提交給ExecutorService,以在另一個線程中啟動find操作,並使用返回的Future對象指定等待的最長時間。

您可以使用Executors類創建ExecutorService。

暫無
暫無

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

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