正则表达式的四大操作(匹配,切割,替换,获取)

一:关于正则表达式的概述:

1、正则表达式:用来操作字符串的一些规则。

2、好处:对字符串的复杂操作变简单。

3、坏处:阅读性差

4、特点:将字符串操作的代码用一些符号来表示

5、组:用小括号标示,每定义一个小括号,就是一个组,而且有自动编号,从1开始。

只要使用组,对应的数字就是使用该组的内容。别忘了,数组要加\\。

(aaa(wwww(ccc))(eee))技巧,从左括号开始数即可。有几个左括号就是几组。

 

二、正则表达式的四种常见操作:

1.  匹配:其实用的就是String类中的matches方法。(用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。)

Stringreg = "[1-9][0-9]{4,14}"

例;

public staticvoid checkQQ()

    {

       String qq = "123a454";  //第一步:数据源

 

       String regex ="[1-9]\\d{4,14}"; //第二步:规则第一位代表1-9;第二位可以是正整数,可以是4-14位

 

       boolean flag = qq.matches(regex);  //第三步:将数据源进行匹配

       if(flag)

           System.out.println(qq+"...isok");

       else

           System.out.println(qq+"...不合法");

 

    }

 

2,切割:其实用的就是String类中的split方法。

 

public staticvoid 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);

       }

   }

  

 

3,替换:String replaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组。

 

public staticvoid replaceAllDemo(String str,String reg,String newStr)

    {

       str = str.replaceAll(reg,newStr);

 

       System.out.println(str);

    }

 

class  RegexDemo

{

    public static voidmain(String[] args)

    {

String str1 ="erkktyqqquizzzzzo";

      replaceAllDemo(str1,"(.)\\1+","$1");//将叠词替换成$.  //将重叠的字符替换成单个字母。zzzz->z

      

    }

 

 

4,获取:

   1)先要将正则表达式编译成正则对象。使用的是Pattern中静态方法 compile(regex);

   2)通过Pattern对象获取Matcher对象。

       Pattern用于描述正则表达式,可以对正则表达式进行解析。

       而将规则操作字符串,需要从新封装到匹配器对象Matcher中。

       然后使用Matcher对象的方法来操作字符串。

       如何获取匹配器对象呢?

       通过Pattern对象中的matcher方法。该方法可以正则规则和字符串想关联。并返回匹配器对象。

步骤:

a、将正则表达式封装成对象。

b、让正则对象和要操作的字符串相关联。

c、关联后,获取正则匹配引擎。

d、通过引擎对符合规则的子串进行操作,比如取出。

 例:

importjava.util.regex.*;

 

class RegexDemo2

{

    public static voidmain(String[] args)

    {

       getDemo();

    }

    public static voidgetDemo()

    {

       String str = "ming tian jiu yao fangjia le ,da jia。";

       System.out.println(str);

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

 

       //第一步:将规则封装成对象。

       Pattern p = Pattern.compile(reg);

 

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

       Matcher m = p.matcher(str);

 

       while(m.find())  第三步:将规则作用到字符串上,并进行符合规则的子串查找。

       {

           System.out.println(m.group());//第四步:用于获取匹配后结果。

 

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

 

       }

    }

}

 

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值