java正则表达式

来源:互联网 发布:linux删除整个目录 编辑:程序博客网 时间:2024/05/21 01:46



正则表达式Pattern:符合一定规则的表达式,
    作用:用于专门操作字符串。
    特点:用于一些特定的符号来表示一些代码操作,这样就简化书写。
    好处:可以简化对字符串的复杂操作。
    弊端:福哈定义越多,正则越长 ,阅读性越差。
具体操作功能:
    1.匹配:String matches方法。用规则匹配整个字符串,只要有一处不符合就返回false
        String str = "b9";
        String reg = "[bcd][0-9]";//定义正则表达式字符串,匹配第一个字符与第二个字符
        boolean b = str.matches(reg);//返回结果为true
    2.切割:
        String str = "zhangsan   lisi wangwu  zhaoliu";
        String reg = " +";//匹配字符空格出现一次或多次
        String[] arr = str.split(reg);//按照reg的格式切割字符串
        
        String str = "asdfadddafddfeaggfadkk";
        String reg = "(.)\\1+";//按照叠词完成切割,为了让规则的结果被重用
                                  //可以讲规则封装成一个组,用()完成,组的出现都有编号,
                               //1开始,想要是用已有的组可以通过,\n(n就是租的编号)的形式来获取。
    3.替换
        replaceAll(reg,newStr);//将符合正则规则的字符串部分替换为newStr        
        replaceAll("(.)\\1+","$1");//$1:代表前一组的字符。
    4.获取:将字符串中符合规则的子串取出。
        操作步骤:
        1.将正则表达式封装成对象
        2.让正则对象和要操作的字符串相关联
        3.关联后,获取正则匹配引擎
        4.通过引擎对符合规则的子串进行操作,比如取出。
        class ServerDemo{
        public static void main(String[] args){
            getDemo();
        }
        public static void getDemo(){
            String str = "ming tian jiu yao fang jia le , da jia.";
            String reg = "\\b[a-z]{3}\\b";
            //将规则封装成对象。
            Pattern p = Pattern.compile(reg);
            //让正则对象和要作用的字符串相关联,获取匹配器对象。
            Matcher m = p.matcher(str);//其实String类中的matches方法就是用的此对象中的matches方法。
            //将规则作用到字符串上,并进行符合规则的子串查找。
                while(m.find()){
                    System.out.println(m.group());//用于获取匹配后的子串
                    System.out.println(m.strat()+"...."+m.end());//获取匹配子串的索引。
                }

            }
        }
练习1
    需求:
    将下列字符串转成:我要学编程。
    思路:
    1.如果只想知道该字符是对是错,使用匹配
    2.想要将已有的字符串变成另一个字符串,替换
    3.想要哪找指定的方式将字符串变成多个字符串。切割,获取规则以外的字符串
    4.想要拿到符合需求的字符串子串,获取。获取符合规则的子串。
    public static void test_1(){
        String str = "我我...我我....我我..要要.....要要..学学学..学学学..编编编..编编...程程...程程.";
        /*
        将已有的字符串变成另一个字符串,使用替换功能。
        1.可以先将去掉。
        2.再将多个重复的内容变成单个内容。
        */
        str = str.replaceAll("\\.+","");//去掉“.”
        str = str.replaceAll("(.)\\1+","$1");//去掉重复。
        System.out.println(str);
    }
练习2:192.68.1.254 102.49.23.10 10.10.10.2 2.2.2.8 109.90.30.30
    将ip地址进行地址段顺序的排序。
    
    还按照字符串自然顺序,只要让他们每一段都是3为即可。
    1.按照每一段需要的最多的0进行补齐,那么每一段就会至少保证有3
    2.将每一段只保留3为。这样所有的ip地址都是每一段3为。
    public static void ipSort(){
        String ip="192.68.1.254 102.49.23.10 10.10.10.2 2.2.2.8 109.90.30.30";
        ip = ip.replaceAll("(\\d+)","00$1");//将每一段数据前面加俩0
        ip = ip.replaceAll("0*(\\d{3})","$1");//将每一段数据替换为每一段数据的后三位。也就是只保留后三位。
        String[] arr = ip.split(" +");
        //最后通过集合进行排序
    }




原创粉丝点击