黑马程序员——27,正则表达式

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

                  黑马程序员——27,正则表达式

一:正则表达式---->

             有一定规则的表达式,用来操作字符串, 用一些特殊符号表示代码。可以简化代码编写,但是符号定义越多正则表达式越长阅读性差。一些正则表达式中常见的构造:

   (为了方便起见我直接图片截取JDK的API)特别注意:\符号如果写在字符串中的话,因为其本身具备转义功能,所以要根据具体情况写一个还是两个反斜杠。

 

                    图1  

    

                 图2

  

            图3

 二:匹配---->

      String类中的boolean  matches(String regex)方法,该方法把整个被操作字符串和规则做比较,符合条件返回true仿真返回false

String  s="59123846516";
String   regex="[a-c2-5]\\d+";
//规则:首位只能是a到c或者2到5;后面跟着一个或者多个数字   
sop(s.matches(regex));//打印方法
//规则是对整个字符串都有效的,所以考虑的时候要注意把整个字符串考虑进去

三:切割---->

         String类中的 String[]  split(String regex)方法,该方法把被操作字符串按照规则切割成一组字符串数组。

class  Ze
{
         public  static  void   main(String[] args)
         {
         public  static void  splitDemo()
         {
                   String   s="火祸ee女哦平jjj我恩vvvbnya链管qwebvveO嘻嘻嘻LQSQEbv";
                   String   regex="(.)\\1+";
                   //按照叠词完成切割,将规则封装到括号里就是组,出现的组都有编号,从1开始
                   //想要使用已有的组可以通过\n来使用,因为\在字符串中有转义含义所以\\n
                   String[]   str=s.split(regex) ;
                   sop("str.length---"+str.length);
                   for(String   zhishi:str)
                   {
                         sop(zhishi);                       
                   }                                    
         }
         public  static void  sop(Object  obj)
         {
             System.out.println(obj);                         
         } 
         }
}
/*
该方法编译运行结果:
str.length---6
火祸
女哦平
我恩
bnya链管qweb
eO
LQSQEbv
*/      

                                         

四:替换---->

        String类中的String  replaceAll(Stringregex, String replacement) 方法,该方法把被操作字符串中的某部分按照规则替换成另外一部分,返回替换后的字符串。其中sop是打印方法。

// 举几个例子:
String   s="691dg238ghth465d16";
String   regex="\\d+";
String   newregex="#";
sop(s.replaceAll(regex,newregex));//把所有数字替换成#

特别的遇到叠词情况:     

//把叠词替换成单字符
                   String  s="ncaaaaaeihhhhrbvuwwgqjjivlqheeeeeeeeeeeeuv";
                   String   regex="(.)\\1+";// 其中\\1表示在同一个字符串中获取第一组
                   String   newregex="$1";//$1表示获取前一个规则中第一组
                   sop(s.replaceAll(regex,newregex));  

五:获取---->

         1,调用Pattern类的静态方法compile把规则封装成Pattern对象

          2,规则对象与被作用的字符串相关联,获取Matcher匹配器对象

         3,调用匹配器对象的方法获取符合规则的子字符串

 

        
import java.util.regex.*;
import java.util.*;
class  Ze2
{
         public  static   void   main(String[]args)
         {
                huoqu();
         }
         public  static  void huoqu()
         {
              String     s="wo  shggfi  yiii gke  reqdewfqrgn,er  qhyjeje  wdco  heOPDnyGTHou  li  qu. ";
              String    reg="\\b\\w{2}\\b";//规则  \b为单词边界
                   //把规则封装成对象
              Pattern   pa=Pattern.compile(reg);  
                   //把规则对象与被作用的字符串关联起来,获取匹配器对象
                   Matcher  ma= pa.matcher(s);
                
                   //sop(ma.matches());//matches方法是把被作用的字符串整体与规则进行比较
                   while(ma.find())//find按照规则来在被作用的字符串中寻找符合条件的子字符串
                   {
                      sop(ma.group());//group返回符合条件的子字符串
                   }
                   /*
                   调用Matcher类对象的方法时候可以看做里面有一个指针,
                   如果先调用matches方法时被操作的字符串不符合规则,那么
                   接着调用find方法时,指针从中断的地方开始走
                   */                                       
         }
         public  static void  sop(Object  obj)
         {
             System.out.println(obj);               
         }
}
       /*
       该方法编译运行结果:
       wo
       er
       li
       qu
 
       */ 


对邮箱验证,这种办法也可以用在网页爬虫中

String   s="mpsqudw1112@qq.com.cn";
String   reg="\\w+@\\w+(\\.\\w+)+"; 
sop(s.matches(reg));   

六:网页爬虫---->

         一般是这样的:用流来读取某个服务端的资源,然后通过上面的正则表达式的获取方法来获取实在存在的有效的邮箱。这个过程中需要用到java.io包所以要记得导相应的包。  


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值