Java基础学习正则表达式

------- 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();

 

正则表达式具体功能

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

示例:正则的匹配功能
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); 
        } 
    } 

 

示例:正则的替换功能
class ReplaceDemo  

    public static void main(String[] args)  
    { 
        String regex1="

将字符串中数字替换成#  
        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()分别表示匹配字符的开始和结尾的索引  
        } 
    } 

 

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值