黑马程序员-----java正则表达式

来源:互联网 发布:一个域名成就一个梦想 编辑:程序博客网 时间:2024/06/05 04:48

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

正则表达式:

其实是用来操作字符串的一些规则。

组:用小括号标示,每定义一个小括号,就是一个组,而且有自动编号,从1开始。
只要使用组,对应的数字就是使用该组的内容。别忘了,数组要加\。
(aaa(wwww(ccc))(eee))技巧,从左括号开始数即可。有几个左括号就是几组。

常见操作:

1,匹配:其实用的就是String类中的matches方法。
String reg = “[1-9][0-9]{4,14}”;
boolean b = qq.matches(reg);//将正则和字符串关联对字符串进行匹配。
2,切割:其实用的就是String类中的split方法。
3,替换:其实用的就是String类中的replaceAll();
4,获取:
1),先要将正则表达式编译成正则对象。使用的是Pattern中静态方法 compile(regex);
2),通过Pattern对象获取Matcher对象。
Pattern用于描述正则表达式,可以对正则表达式进行解析。
而将规则操作字符串,需要从新封装到匹配器对象Matcher中。
然后使用Matcher对象的方法来操作字符串。
如何获取匹配器对象呢?
通过Pattern对象中的matcher方法。该方法可以正则规则和字符串想关联。并返回匹配器对象。
3),使用Matcher对象中的方法即可对字符串进行各种正则操作。

示例:

class  RegexDemo{    public static void main(String[] args)     {        //demo();        //System.out.println((char)11);//      checkTel();        //splitDemo("zhangsan.lisi.wangwu","\\.");        //splitDemo("c:\\abc\\a.txt","\\\\");        //splitDemo("erkktyqqquizzzzzo","(.)\\1+");//按照叠词完成切割。为了可以让规则的结果被重用                                                //可以将规则封装成一个组。用()完成。组的出现都有编号。                                                //从1开始。 想要使用已有的组可以通过  \n(n就是组的编号)的形式来获取。        String str = "wer1389980000ty1234564uiod234345675f";//将字符串中的数组替换成#。        //replaceAllDemo(str,"\\d{5,}","#");        String str1 = "erkktyqqquizzzzzo";//将叠词替换成$.  //将重叠的字符替换成单个字母。zzzz->z        replaceAllDemo(str1,"(.)\\1+","$1");    }    public static void replaceAllDemo(String str,String reg,String newStr)    {        str = str.replaceAll(reg,newStr);        System.out.println(str);    }    public static void splitDemo(String str,String reg)    {        //String reg = " +";//按照多个空格来进行切割        String[] arr = str.split(reg);          System.out.println(arr.length);        for(String s : arr)        {            System.out.println(s);        }    }    /*    匹配    手机号段只有 13xxx 15xxx 18xxxx    */    public static void checkTel()    {        String tel = "16900001111";        String telReg = "1[358]\\d{9}";        System.out.println(tel.matches(telReg));    }    public static void demo()    {        String str = "b23a23456789";        String reg = "[a-zA-Z]\\d*";        boolean b= str.matches(reg);        System.out.println(b);    }    public static void checkQQ()    {        String qq = "123a454";        String regex = "[1-9]\\d{4,14}";        boolean flag = qq.matches(regex);        if(flag)            System.out.println(qq+"...is ok");        else            System.out.println(qq+"... 不合法");    }    /*    对QQ号码进行校验    要求:5~15  0不能开头,只能是数字    这种方式,使用了String类中的方法,进行组合完成了需求。但是代码过于复杂。    */    public static void checkQQ_1()    {        String qq = "1882345a0";        int len = qq.length();        if(len>=5 && len<=15)        {            if(!qq.startsWith("0"))//Integer.parseInt("12a");NumberFormatException            {                try                {                    long l = Long.parseLong(qq);                    System.out.println("qq:"+l);                }                catch (NumberFormatException e)                {                    System.out.println("出现非法字符.......");                }                /*                char[] arr = qq.toCharArray();//123a4                boolean flag = true;                for(int x=0;x<arr.length; x++)                {                    if(!(arr[x]>='0' && arr[x]<='9'))                    {                        flag = false;                        break;                    }                }                if(flag)                {                    System.out.println("qq:"+qq);                }                else                {                    System.out.println("出现非法字符");                   }                */            }            else            {                System.out.println("不可以0开头");            }        }        else        {            System.out.println("长度错误");        }    }}

通过实际操作如下:

  • 好处:正则的出现,对字符串的复杂操作变得更为简单。
  • 特点:将对字符串操作的代码用一些符号来表示。只要使用了指定符号,就可以调用底层的代码对字符串进行操作。符号的出现,简化了代码的书写。
  • 弊端:符号的出现虽然简化了书写,但是却降低了阅读性。
    其实更多是用正则解决字符串操作的问题。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一级注册消防工程师论坛 二级消防工程师好考吗 一级注册消防工程师招聘 注册消防工程师难考吗 考一级消防工程师有用吗 消防工程师难度 一消防工程师 一级消防工程师考试难度 一级消防工程师好考吗 消防工程师待遇 注册消防工程师一级二级区别 一级注册消防工程师好考吗 注册消防工程师好不好考 一级消防工程师难度 二级注册消防工程师考试科目 二级消防考试时间 一级消防工程师招聘 陕西二级消防工程师报名时间 2017消防工程师考试时间 消防工程师代报名 消防技术综合能力 一级注册消防工程师报考条件 河北二级消防工程师报名时间 二级消防工程师报名条件 消防员考试报考条件 消防技术实务 一级注册消防工程师报名时间 消防安全工程师考试时间 消防注册工程师报考条件 2017一级消防工程师报名时间 二级消防考试科目 辽宁消防工程师报名时间 一级消防工程师免考条件 注册消防工程师考哪几门 注册消防工程师考试题型 湖南消防工程师报名时间 注册消防工程师免考条件 消防注册工程师报名条件 山东消防工程师 安徽消防工程师 初级消防工程师