当前位置:编程学习 > JAVA >>

正则表达式

 
正则表达式
 
一、概述
 
1、概念:符合一定规则的表达式。
 
2、作用:用于专门操作字符串。
 
3、特点:用于一些特定的符号来表示一些代码操作,这样就可以简化代码书写。
 
4、好处:可简化对字符串的基本操作。
 
5、弊端:符号定义越多,正则越长,阅读性越差。
 
 
二、常用符号:
 
说明:X表示字符X或者匹配的规则。
 
一)字符
 
构造                                    匹配
 
\\                                    反斜线字符
 
\t                                    制表符
 
\n                                    回车符
 
\f                                     换页符
 
二)字符类
 
[abc]                              a、b或c(简单类)
 
[^abc]                            任何字符,除了a、b或c(否定)
 
[a-zA-Z]                         a到z货A到Z
 
[a-d[m-p]]                     a到d或m-p:[a-dm-p](并集)
 
三)预定义字符类
 
.                                     任何字符(与行结束符可能匹配也可能不匹配)
 
\d                                   数字: [0-9]
 
\D                                  非数字:  |^[0-9]
 
\s                                  空白字符:[ \t\n\x0B\f\r]
\S                                  非空白字符:[^ \t\n\x0B\f\r]
 
\w                                  单词字符:[a-zA-Z_0-9]
\W                                  非单词字符:[^\w]
四)边界匹配器
 
^                                  行的开头
 
$                                  行的结尾
 
\b                                  单词边界
\B                                  非单词边界
\A                                  输入的开头
 
五)Greedy数词量---->匹配整个字符串
 
X?                                  X,一次或一次也没有
 
X*                                  X,零次或多次
 
X+                                  X,一次或多次
 
X{n}                               X,恰好n次
 
X{n,}                             X,至少n次
 
X{n,m}                         X,至少n次,但不超过m次
 
六)组和捕获
 
捕获组可通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
 
1     ((A)(B(C)))
2     \A
3     (B(C))
4     (C) 组零始终代表整个表达式
在替换中常用$匹配组的内容,下面将会介绍到
 
三、正则表达式具体功能
 
主要有四种具体功能:匹配、切割、替换和获取
 
1、匹配:String matches方法。
 
用规则匹配整个字符串,只要有一处不符合,就匹配结束,返回false
 
[java] 
//匹配  
    /* 
     * 1、对qq号进行校验 
     * 要求:5~15  0不能开头,只能是数字 
     */  
    //非正则写法  
    public static void checkQQ1(String qqStr){  
        int len = qqStr.length();  
        if(len>=5 && len<=15){  
            if(qqStr.indexOf(0)!='0'){  
                Long l = Long.parseLong(qqStr);  
                System.out.println("qq为:" + l);  
            }  
            else  
                System.out.println("不可以0开头");  
        }  
        else  
            System.out.println(qqStr + "不合法");  
    }  
    //正则写法  
    public static void checkQQ(String qqStr){  
        //定义规则  
        String reg = "[1-9]\\d{4,14}";  
        if(qqStr.matches(reg))  
            System.out.println("qq:" + qqStr);  
        else  
            System.out.println(qqStr + "不是qq号");  
    }  
    //匹配电话号码  
    /* 
     * 1、手机号段只有 13xxx 15xxx 18xxxx 
     * 2、座机号:010-65784236,0316-3312617,022-12465647,03123312336 
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,