黑马程序员技术交流社区

标题: 正则 [打印本页]

作者: xiaojunru    时间: 2016-3-10 20:55
标题: 正则
package com.heima.regex;

public class Demo7_Regex {

    /**
     * * A:正则表达式的分组功能
            * 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
        *
                1     ((A)(B(C)))
                2     (A
                3     (B(C))
                4     (C)
            
                组零始终代表整个表达式。
        B:案例演示
            a:切割
                需求:请按照叠词切割: "sdqqfgkkkhjppppkl";
            b:替换
                需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
                将字符串还原成:“我要学编程”。
     */

    public static void main(String[] args) {
        //demo1();
        //demo2();
        
        /*
         * 需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
                将字符串还原成:“我要学编程”。
         */

        String s = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
        String s2 = s.replaceAll("\\.+", "");
        String s3 = s2.replaceAll("(.)\\1+", "$1");    //$1代表第一组中的内容
        System.out.println(s3);
    }

    public static void demo2() {
        //需求:请按照叠词切割: "sdqqfgkkkhjppppkl";
        String s = "sdqqfgkkkhjppppkl";
        String regex = "(.)\\1+";                    //+代表第一组出现一次到多次
        String[] arr = s.split(regex);
        
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr);
        }
    }

    public static void demo1() {
        //叠词 快快乐乐,高高兴兴
        /*String regex = "(.)\\1(.)\\2";                    //\\1代表第一组又出现一次    \\2代表第二组又出现一次
        System.out.println("快快乐乐".matches(regex));
        System.out.println("快乐乐乐".matches(regex));
        System.out.println("高高兴兴".matches(regex));
        System.out.println("死啦死啦".matches(regex));*/

        
        //叠词 死啦死啦,高兴高兴
        String regex2 = "(..)\\1";
        System.out.println("死啦死啦".matches(regex2));
        System.out.println("高兴高兴".matches(regex2));
        System.out.println("快快乐乐".matches(regex2));
    }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2