您的位置:首页 > 编程语言 > Java开发

Java基础学习正则表达式

2015-08-24 22:14 696 查看


------- android培训java培训、期待与您交流! ----------

                                                                           
                         正则表达式

一、概述

        1、 概念:符合一定规则的表达式。

        2、 作用:用于专门操作字符串。

        3、 特点:用于一些特定的符号来表示一些代码操作,这样可以简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。

        4、 好处:可以简化对字符串的复杂操作。

        5、 弊端:符合定义越多,正则越长,阅读性越差。

正则表达式:

  1.字符类:

   1).[aeiou]

   2).[^aeiou]

   3).[a-z]

   4).[a-zA-Z0-9]

  2.逻辑运算符:

   1).&&:与

   2).|:或

  3.预定义字符类:

   1).".":任何字符

   2)."\d":任何数字,[0-9]的简写形式;

   3)."\D":任何非数字,[^0-9]的简写形式;

   4)."\s":任何空白字符。空格、制表符(\t)、换行符(\n)

   5)."\S":任何非空白字符。是[^\s]的简写形式;

   6)."\w":任何大写、小写字母,或数字或下划线。是[a-zA-Z_0-9]的简写形式;

   7)."\W":任何非单词字符。是[^\w]的简写形式;

  4.限定符:

   1)."+":1次或多次;

   2)."?":0次或1次;

   3)."*":0次或多次;

   4).{n}:恰好n次;

   5).{n,}:至少n次;

   6).{n,m}:n(包含)--m(包含)次

  5.String类中与正则表达式相关的方法:

   1).String[] split(String regex):使用regex正则表达式的规则切割字符串;

   2).replaceAll(String regex,String newStr):使用newStr替换字符串中符合regex表达式的字符串;

  6.Pattern和Matcher类:

   Pattern p = Pattern.compile("a*b");

    Matcher m = p.matcher("aaaaab");

    boolean b = m.matches();

 

二[b]、正则表达式具体功能[/b]

        主要有四种具体功能:匹配、切割、替换和获取
示例:正则的匹配功能

class  MatchesDemo 



    /*

    对QQ号码进行校验

    要求:5~15  0不能开头,只能是数字

    */ 

    //方式一,不用正则表达式  

    public static void qqCheck_1(String qq) 

    { 

        if (!qq.startsWith("0")) 

        { 

            if (qq.length()>=5&&qq.length()<=15) 

            { 

                try 

                { 

                    Long l=Long.parseLong(qq);//利用封装基本数据类型出现非数字报异常的特点  

                    System.out.println(qq); 

                } 

                catch (NumberFormatException e) 

                { 

                    System.out.println("包含非法字符!"); 

                } 

            } 

            else 

                System.out.println("你输入的长度非法!"); 

        } 

        else 

            System.out.println("没有0开头的号码,请重输!"); 

    } 

     

    //方式二,用正则来实现  

    public static void qqCheck_2(String qq) 

    { 

        String regex="[1-9]\\d{4,14}"; 

        if (qq.matches(regex))//用String类中matches方法来匹配  

        { 

            System.out.println(qq); 

        } 

        else 

            System.out.println(qq+":是非法的号码!"); 

 

    } 

 

 

    /*

        匹配

        手机号段只有 13xxx 15xxx 18xxxx

    */ 

 

    public static void phoneCheck(String phone) 

    { 

        String regex="1[358]\\d{9}"; 

        if (phone.matches(regex)) 

        { 

            System.out.println(phone+":::is ok.."); 

        } 

        else 

            System.out.println("手机号码输入有误!"); 

    } 

 

 

    public static void main(String[] args)  

    { 

        String qq="125696"; 

        qqCheck_1(qq);//不用正则的方式  

        qqCheck_2(qq);//用正则的方式  

 

        String phone="13345678910"; 

        phoneCheck(phone);//匹配手机号码是否正确  

    } 

 

示例:正则的切割功能

class SplitDemo  



 

    public static void main(String[] args)  

    { 

        String regex1="\\.";//按 .切  

        String regex2=" +";//按空格切,可能有一个空格或者多个空格  

        String regex3="(.)\\1+";//按照出现两次或者以上的叠词切  

        String[] arr="192.168.1.62".split(regex1);//按 . 切  

        print(arr); 

 

        arr ="wo  shi   shui    545  21     3".split(regex2);//按空格切  

        print(arr); 

 

        arr="erkktyqqquizzzzzo".split(regex3);//按叠词切  

        print(arr);  

    } 

 

    //遍历  

    public static void print(String[] arr) 

    { 

        for (String s : arr) 

        { 

            System.out.println(s); 

        } 

    } 



 

示例:正则的替换功能
4000

class ReplaceDemo  



    public static void main(String[] args)  

    { 

        String regex1="\\d{5,}";//将字符串中数字替换成#  

        String regex2="(.)\\1+";//将叠词替换为一个  

 

        String s1="erej569831217woshi2659810wosxs12356f"; 

        s1=s1.replaceAll(regex1,"#");//将字符串中的数字替换成#  

 

        String s2="erkktyqqquizzzzzo"; 

        s2=s2.replaceAll(regex2,"$1");//将叠词替换为一个,其中$1表示符合组中一个字符  

 

        System.out.println("s1:"+s1); 

        System.out.println("s2:"+s2); 

    } 



 

示例:正则的获取功能

import java .util.regex.*; 

class  PatternDemo 



    public static void main(String[] args)  

    { 

        String s= "ming tian jiu yao fang jia le ,da jia。"; 

        String regex="\\b[a-z]{4}\\b"; 

        get(s,regex); 

    } 

    public static void get(String s,String regex) 

    { 

        //将规则封装成对象。  

        Pattern p=Pattern.compile(regex); 

        //让正则对象和要作用的字符串相关联。获取匹配器对象。  

        Matcher m=p.matcher(s); 

 

        //System.out.println(m.matches());  

        //其实String类中的matches方法。用的就是Pattern和Matcher对象来完成的。  

        //只不过被String的方法封装后,用起来较为简单。但是功能却单一。  

 

        while(m.find())//find()方法是将规则作用到字符串上,并进行符合规则的子串查找。  

        { 

            System.out.println(m.group());//group()方法用于获取匹配后结果。  

            System.out.println(m.start()+"...."+m.end()); 

//start()和end()分别表示匹配字符的开始和结尾的索引  

        } 

    } 



 

 

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: