是否进行预编译的正则表达式时间效率对比
现象
最近工作,整理项目中的定时任务,发现定时任务线程run()方法中,使用正则表达式Pattern进行匹配字符串,并且没有使用预编译进行。如下:
Pattern startPattern =Pattern.compile("<input type=\"hidden\" name=\"policyCode\"");
Pattern endPattern =Pattern.compile("/>");
Pattern pattern =Pattern.compile("\"");
public void run(){
......
Matcher m = startPattern.matcher(htmlSource);
......
}
问题来了,记得《Java开发手册》内容:
【强制】在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。
说明:不要在方法体内定义:Pattern pattern = Pattern.compile(“规则”);
而工作项目中都做了最好的反例演示。
举个项目中的例子:
此方法checkEmail()在保单信息导入的时候回做数据预处理,其中一项就是邮箱格式检测。
/**
* 描述:验证邮箱格式是否正确
* @param email
* @return
*/
public static boolean checkEmail(String email)
{
boolean flag = false;
// 定义正则表达式
String check =
"^[A-Za-z0-9_]+([-&#