(.)\\1+ 在java中的正则含义是什么

 

表示匹配连续的多个相同的任意字符,只要找到字符串里面存在连续的两个或者以上的相同字符即匹配。

括号中的点表示任意字符,后面的\\1表示取第一个括号匹配的内容,后面的加号表示匹配1次或1次以上,二者加在一起就是某个字符重复两次或两次以上。

    /**
     * 1.将下面的国家重叠的字符替换成 竖线 |
     * ChinaqqqAmericahhhhhEnglandaaaaaaMexica
     */
    @Test
    public void test1()
    {
        String str="ChinaqqqAmericahhhhhEnglandaaaaaaMexica";

        //(.)\\1+:表示匹配连续的多个相同的任意字符,只要找到字符串里面存在连续的两个或者以上的相同字符即匹配。
        System.out.println(str.replaceAll("(.)\\1+", "|"));//China|America|England|Mexica
    }

    /**
     * 2.将下面的国家重叠的字符替换成 一个, 也就是去掉重复的分隔符
     * China|||||America::::::England&&&&&&&Mexica
     */
    @Test
    public void test2()
    {
        String str="China|||||America::::::England&&&&&&&Mexica";

        //(.)\\1+:表示匹配连续的多个相同的任意字符,只要找到字符串里面存在连续的两个或者以上的相同字符即匹配。 
        System.out.println(str.replaceAll("(.)\\1+","$1"));//China|America:England&Mexica
    }

 

    @Test
    public void test3(){
        String regex = "(.)\\1+";
        Pattern pattern = Pattern.compile(regex);

        String address="京东号";
        System.out.println(pattern.matcher(address).find());//false

        address="阿里巴巴号";
        System.out.println(pattern.matcher(address).find());//true
    }

 

posted @ 2021-01-11 23:49  water-droplet  阅读(3059)  评论(0)    收藏  举报