正则表达式如果匹配时间过长,如何超时或跳过java中的任何匹配器(正则表达式)?
在我的项目中,我使用正则表达式来匹配字符串。这里的字符串是动态的,所以有时需要很长时间来匹配字符串。
这是我的代码(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;
}
}
# 1 楼答案
您可以考虑将一个RunnLabor提交到一个ExecutorService中,以启动另一个线程中的查找操作,并使用返回的Future对象来指定等待的最大时间。
您可以使用Executors类来创建ExecutorService
# 2 楼答案
我有一个类似的例子,有一个“格式错误”的正则表达式。处理这个问题的最好方法是限制组重复使用{x},其中x是一个现实的数字(5或10),可能就足够了。检查http://www.regular-expressions.info/repeat.html限制重复
没有你的正则表达式,我帮不了你