[英]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.