黑马程序员——正则表达式

来源:互联网 发布:3dmax动画导入unity3d 编辑:程序博客网 时间:2024/05/20 03:42

--------------------- android培训、java培训、期待与您交流! ----------------------

什么是正则表达式?
正则表达式是由英文词语regular expression翻译过来的,就是符合某种规则的表达式。正则表达式在软件开发中应用非常广泛,例如,找出网页中的超链接,找出网页中的email地址,找出网页中的手机号码,判断输入的内容是否全部是数字,是否满足某种日期格式等等。
为什么要用正则表达式?
依据上面的,我们可以清楚的了解到正则基本都是对字符串进行判断的。但是我们也可以直接通过字符串进行判断某些,简单是绝对没有问题的,但是遇到复杂的,我们有可能就会写很很多的代码,比如一个QQ号码校验,要求:5~15  0不能开头,只能是数字。我们若用字符串进行判断,下面用字符串和用正则表达式的区别

用字符串代码如下:

public static void checkQQNum() {        String qq = "1882345a0";        int len = qq.length();        if(len>=5 && len<=15)        {            if(!qq.startsWith("0"))//Integer.parseInt("12a");NumberFormatException            {                try                {                    long l = Long.parseLong(qq);                    System.out.println("qq:"+l);                }                catch (NumberFormatException e)                {                    System.out.println("出现非法字符.......");                }                                      }            else            {               System.out.println("不可以0开头");            }        }        else        {            System.out.println("长度错误");        }    }

但是我们有了正在表达式之后代码变成如下:
public static void checkQQNum()    {        String str = "b23a23456789";        String reg = "[a-zA-Z]\\d*";        boolean b= str.matches(reg);        System.out.println(b);    }

通过上面的比较我们可以很清楚的看到了正则表达式给我们带来的好处。但是正则表达式也有弊端就是当我们在写比较复杂的正则是有可能会让别人看不懂。

正则表达式里面同时也封装了两个比较重要的类:
1.Pattern,该类是没有显示的的构造方法的,是通过compile(String regex) 方法返回本类对象的应用。

Pattern对象表示经编译的正则表达式。静态的compile( )方法负责将表示正则表达式的字符串编译成Pattern对象。正如上述例程所示的,只要给Pattern的matcher( )方法送一个字符串就能获取一个Matcher对象。此外,Pattern还有一个能快速判断能否在input里面找到regex的。

2.Matcher通过解释 Pattern 对 character sequence 执行匹配操作的引擎。

通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:

matches 方法尝试将整个输入序列与该模式匹配。

lookingAt 尝试将输入序列从头开始与该模式匹配。

find 方法扫描输入序列以查找与该模式匹配的下一个子序列。



---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima

	
				
		
原创粉丝点击