本帖最后由 shenqi 于 2013-5-12 02:29 编辑
问:什么是正则表达式? 答:所谓正则表达式(regex)可以理解为符合某种规则的表达式,在Java中专门用来处理字符串的。 那么使用正则表示是究竟有什么好处呢?首先观察如下代码: //一个检验QQ号码是否合法的程序(没有使用正则表达式): package cn.itcast.itheima2; public class RegexTest { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(new RegexTest().checkQQ("5656247")); } public boolean checkQQ(String qq){ //qq号码的规则:5~15位纯数字 首位非0 //检查长度 int len = qq.length(); if(len >=5&&len<=15){ //检查首位是否为0 if(!qq.startsWith("0")){ //检查是否纯数字 for(int i=0;i<qq.length();i++){ if(!(qq.charAt(i)>='0' && qq.charAt(i)<='9')){ //如果存在非数字立即返回false System.out.println(“出现非法字符”) ; return false; } } //也可以使用转换的方式检验是否纯数字 /*try{ long l = Long.parseLong(qq); }catch(NumberFormatException e){ System.out.println(“出现非法字符”) ; }*/ }else{ System.out.println("首位不能为0"); return false; } }else{ System.out.println("长度错误!"); return false; } return true; } } 以上代码校验QQ号码尤为复杂,如果使用正则表达式检验QQ号码代码则会简洁得多: package cn.itcast.itheima2; public class RegexTest { public static void main(String[] args) { System.out.println(new RegexTest().checkQQRegex("56534237")); } public boolean checkQQRegex(String qq){ //[1-9]表示字符串的第一位的范围1-9的数字 //[0-9]表示字符串的第二位的范围0-9的数字 //{4,14}表示第二位开始至少出现4-14个数字 return qq.matches("[1-9][0-9]{4,14}"); } }
显然使用正则表达式更具优越性,正则表达式利用一段特定的符号对字符串进行操作,其底层同样也是利用了复杂的方法写的,只不过我们使用的时候比较爽,学习正则表达式其实就是学习这些特定的符号。正则表达式的单词是regex,位于java..util.regex.Pattern中,在Java se的API文档中可以查看到已经构造好的的匹配符号。 例如: 具体可以查看java se的文档。 |