正则表达式

来源:互联网 发布:linux piwik 安装 编辑:程序博客网 时间:2024/05/22 12:57

代码:

package regex;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexDemo {    public static void main(String[] args) {        testRegexMatch("00111");        testRegexSplit("zhangsanmmmmmmmmmmmmmlisipppppppppwangwu");        testRegexReplace("zhangsanmmmmmmmmmmmmmlisipppppppppwangwu");        testRegexGet("ni hao tong xue men,ming tian fang jia");    }     /*     * 匹配:     * 1、从几个中选一个:                [359]表明从3或5或9任选一个     * 2、从一串中任选一个:            [0-9]表明从0到9任选一个([0-9]可用\d代替)     * 3、匹配次数:                            {9}表明匹配9次,{0,9}表示0到9次     */    public static void testRegexMatch(String str){        String regex="0{2}\\d{0,9}";  //"[1-9][0-9]{4,14}";        System.out.println("匹配:"+str.matches(regex));    }    /*     * 切割:     * 1、切割单个空格 :                                     " "     * 2、切割一个或多个空格:                          " +"     * 3、切割点:                                                  "\\.",因为.在正则表示任意字符,故而需要转义     * 4、切割一个或多个点:                              "\\.+"     * 5、切割几组相同字符,如“zhangsanzzzzlisippppwangwuffff”:    "(.)\\1+"     */    public static void testRegexSplit(String str){        String regex="(.)\\1+";        String [] arr=str.split(regex);        for(String s : arr){            System.out.println("切割:"+s);        }    }    /*     * 替换:使用String的replaceAll()     * 1、获取前一个参数:    $1     */    public static void testRegexReplace(String str){        String s=str.replaceAll("(.)\\1+", "$1");        System.out.println(s);        //替换电话号码        String tel="18813296645";        String rep=tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");        System.out.println(rep);    }    /*     * 获取:  先创建正则表达式对象,再用Matcher操作字符串     *      Pattern p = Pattern.compile("a*b");     *      Matcher m = p.matcher("aaaab");     *      m.matches();     */    public static void testRegexGet(String str){        String regex="\\b[a-z]{3}\\b";        Pattern p = Pattern.compile(regex);  //创建字符串序列        Matcher m = p.matcher(str);        //关联字符串        while(m.find()){            System.out.println(m.group());            System.out.println(m.start()+"-"+m.end()); //获取位置,包含头不包含尾        }    }}

结果:

匹配:true切割:zhangsan切割:lisi切割:wangwuzhangsanmlisipwangwu188****6645hao3-6xue12-15men16-19jia35-38
0 0