毕向东之正则表达式

/*正则表达式:符合一定规则的表达式(API方法中参数为regex的为正则)
 作用:用于专门操作字符串,可以简化对字符串的复杂操作
需求:对QQ号码进行校验,要求:5-15位,0不能开头
当用字符串的方法去实现时比较麻烦,而正则表达式做起来比较简便
 */
public class Test1 {
    public static void main(String[] args) {
        String regex="[1-9][0-9]{4,14}";//第一个数为1至9,4到14个0至9的数
        String qq="12345";
        boolean flag=qq.matches(regex);
        if(flag)
            System.out.println("OK");
        else
            System.out.println("不合法");
    }
}

 

 

/*具体操作功能:
1.匹配:String  matches方法。用规则匹配整个字符串
    [abc] 代表a或b或c
2.切割:spit
3.替换:replace
 */
public class Test2 {
    public static void main(String[] args) {
        replaceAll();
    }
    public static void replaceAll(){
        String regex="(.)\\1+";//
        String str="aaafdddkkkdasd";
        str=str.replaceAll(regex,"$1");//$1表示获取组1的值
        System.out.println(str);//afdkdasd
    }
    public static void spitDemo(){
        String regex=" +";//当有多个空格时,用+表示
        String str="aa  d cd  dasd";
        String[] arr=str.split(regex);//按照多个空格切割
        for(String s:arr){
            System.out.println(s);//四个
        }
        //按照叠词完成切割
        regex="(.)\\1+";//(.)表示组  .表示任意字符  1+表示多个和1组相同的字符
        str="avvbcffffdasddz";
        String[] arr2=str.split(regex);
        for(String s:arr2){
            System.out.println(s);
        }
        
    }
    public static void matchesDemo(){
        String regex="[1][358]\\d{9}";
        String str="135425568755";
        System.out.println(str.matches(regex));
    }
}

 

 

/*4.获取
其实String类中的matches方法,用的就是Pattern和Matcher对象来完成的
只不过被String的方法封装后,用起来较为简单,但是功能却单一
 */
import java.util.regex.*;
public class Test3 {//获取单词数为4个的单词
    public static void main(String[] args) {
        String str="ming tian jiu yao fang jia le,da jia";
        String reg="\\b[a-z]{4}\\b";//\b代表单词边界
        Pattern p=Pattern.compile(reg);//将规则封装成对象
        Matcher m=p.matcher(str);//让正则对象和要作用的字符串相关联,获取匹配器对象
        while(m.find()){//进行符合规则的子串查找
            System.out.println(m.start()+"..."+m.end());//符合要求的索引
            System.out.println(m.group());//获取匹配后结构过(类似于迭代器)
        }
        
    }
}

 

posted @ 2016-05-31 12:55  ts-android  阅读(249)  评论(0编辑  收藏  举报