java正则表达式总结

package pack;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Demo {

    public static void main(String[] args) {
        //method1();//匹配
        //method2();//切割
        //method3();//替换

        /*前面只是用了String的方法*/

        method4();

    }

    public static void method1() {
        String qq = "1881265";
        String regex1 = "[1-9]\\d{4,14}";
        sys(qq.matches(regex1));  //是否符合regex规则

        String s = "e";
        //String regex = "[a-zA-Z]";  // 字母
        //String regex = "[a-d[m-p]]";   //a到d 或 m到p

        /* \d     数字[0-9]
         * \D     非数字[^0-9]
         * \s     空白字符
         * \S     非空白字符
         * \w     单词字符[a-zA-Z0-9_]
         * \W     非单词字符
         * 
         * 
         * 
         * X?      一次或零次
         * X*      零次或多次
         * X+      一次或多次
         * X{n}    恰好n次
         * X{n,}   至少n次
         * X{n,m}  n次到m次
         *  
         */

        String regex = "\\d";    
        sys(s.matches(regex));
    }

    public static void method2() {
        /*String s = "zhang   li    san";
        String regex = "\\s+";
        String[] arr = s.split(regex);
        for(String ss : arr)
            sys(ss);*/


        /*
        String s = "zhang.li.san";
        String regex = "\\.";  //  \.代表正则表达式中的.即任意字符,\\.代表普通点,
                                                                                                           不能直接用.切,它是特殊字符
        String[] arr = s.split(regex);
        for(String ss : arr)
            sys(ss);*/

        /*String s = "www\\abs\\1.txt";
        String regex = "\\\\";  
        String[] arr = s.split(regex);
        for(String ss : arr)
            sys(ss);*/


        String s = "wekkyduffopxxxs";        //按叠词切
/*按照叠词完成切割,为了让规则是结果被重用,可以将规则封装成一个组,用()完成,组都有编号,从1开始*/
        String regex = "(.)\\1+"; //括号是组的概念,\1是再次出现,\1+是一次或多次
        String[] arr = s.split(regex);
        for(String ss : arr)
            sys(ss);

    }

    public static void method3() {

        String s = "wj3374zns399nvn9999klf3333";  //将数字替换为#号
        String regex = "[0-9]";
        s.replaceAll(regex, "#");
        sys(s);

        /*String s = "wekkyduffopxxxs";  //将叠词替换为单个,如:zzzz->z
        String regex = "(.)\\1+";
        s.replaceAll(regex, "$1");
        sys(s);*/
    }


    public static void method4() {
        String s = "zhas asb cjcdj csj cbbdv";
        String regex = "[a-z]{3}";

        //将规则封装成对象
        Pattern p = Pattern.compile(regex);

        //获取匹配器对象
        Matcher m = p.matcher(s);

        sys(m.matches()); //匹配全部,为false,注意:指针向后移了,会影响下面的结果
        while(m.find()) {
            sys(m.group());  //匹配到的字符串
            sys(m.start()+"..."+m.end()); //匹配到的字符串起止位
        }

    }


    public static void sys(Object obj) {
        System.out.println(obj);
    }
}

你可能感兴趣的:(java,正则表达式)