黑马程序员---正则表达式的总结

来源:互联网 发布:ads仿真软件破解 编辑:程序博客网 时间:2024/05/17 05:12

ASP.Net+Android+IOS开发、.Net培训、期待与您交流!

正则表达式:符合一定规则的表达式
      作用:主要用于操作字符串;
具体功能:1、匹配,用的是String类的matches(regex)方法;
         正则表达式用一些特定的字符来处理代码操作,简化书写过程。
  
      2、正则表达式对字符串的切割功能
   (按照多个空格来切割用" +"或者是"[ ]+",按照.来切割字符串时用"\\.“或者是”[.]“表示;使用正则表达式的分组切割时
   可以通过()来完成分组,组的出现都有编号,从1开始,想要使用已存在的组来切割字符串,可以通过\n(其中n就是已存在组的编号)的形式来获取组的信息
   在正则表达式中(((A)((B))))来表示分组,其中组数由”(“来确定,组号从1开始计数,$n(n表示获取的组号)
  
   3、正则表达式的替代功能
      String类的replaceAll(String regx,String newstr)该方法中需要指出正则表达式regx和替代的新的字符newstr,当regx中使用分组时,可以使用$n
   (n表示分组中的第n组)如:
   String str1 = "sggsdgcdvssjjsdbehbdddddddsbdhewbhd";
      String regx1 = "(.)\\1{1,}";
   String newStr = "$1";//用叠词的第一个元素代替叠词,其中$表示取分组的第一组
      extend(str1, regx1, newStr);
        
   4、正则表达式的获取功能
       取出字符串中特定的字符串,其中字串以满足正则表达式的要求
    实现步骤:
           1、将正则表达式封装成对象 :
         Pattern p = Pattern.compile(reg);
     2、将正则表达式封装的对象p于被操作的对象字符串像关联:
         Matcher m  = p.matcher(str);
     3、关联后,获取相匹配的关联引擎对象 m
     4、按照分组情况,对引擎获得的字串进行操作(该步骤是对字串操作的主要步骤,如将字串取出,利用等)
      while(match.find())//字符串匹配
      {
       System.out.println(match.group());//取出符合特定规则的字串
      }
   
正则表达式的规则:
   一些特定的字符:(只能校验特定位数的字符串,如果字符串长度过长或者短,校验失败(返回false))
   [abc]:表示只能校验一个字符,并且为a或b或c
   [a-d]:表示一个字符,并且在a到d之间
   [a-zA-Z]:表示一个字符,在a-z或A-Z之间
   [0-9]:表示一个数字在0-9之间
   [^abc]:表示出了a,b,c的任意字符
   [a-r&&[^d-h]]:表示a-r的任一个字符,但要去除d-h之间的字符
   预定义的字符串:
   .:表示任意字符
   \d:表示数字0-9之间的任意数字
   \D:表示非数字的字符
   \w:表示单词字符[a-zA-Z_0-9]
   \W:表示非单词字符
   \d?:表示数字出现一次没有出现
   (\d)*:表示(数字)出现多次
   X+:表示X出现一次或多次
   X{n}:表示恰好出现n次
   X{n,}:表示X至少出现n次
   X{n,m}:表示X出现n到m次
      ^  一行文字的开始
   $  一行的结束
   \b  一个单词的边界
   \B  A non-word boundary
   \A  输入的开始
   \G  The end of the previous match
   \Z  The end of the input but for the final terminator, if any
   \z  The end of the input
  
正则表达式的练习:
     到底使用四种功能中的那一功能呢?或者哪几个呢?
  1、如果只想知道某一个字符串是否正确时,只用匹配(String 类的matches(regex))
  2、想要将已有的字符串变为另一个字符串,使用替代功能
  3、想要按照自定的方式将字符串变成多个字符串,使用切割功能 获得规则以外的字符串
  4、想要拿到符合需求的字符串的子串,采用正则表达式的获取功能,获取符合规定的子串

ASP.Net+Android+IOS开发、.Net培训、期待与您交流!

原创粉丝点击