黑马程序员技术交流社区

标题: 正则表达式基本应用 [打印本页]

作者: gghost2012    时间: 2015-8-10 14:30
标题: 正则表达式基本应用
  1. 正则表达式
  2. /*
  3. 正则表达式:符合一定规则的表达式。
  4.         作用:用于专门操作字符串。
  5.         特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。


  6. 具体操作功能:匹配,切割,替换,获取掌握基本方法,根据不同要求定义正则规则,多练习,熟悉常用简便写法。

  7. 1,匹配:String  matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
  8.        
  9. 2,切割:String split();

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

  11. 4,获取:
  12.                 操作步骤:
  13.                 1,将正则表达式封装成对象。
  14.                 2,让正则对象和要操作的字符串相关联。
  15.                 3,关联后,获取正则匹配引擎。
  16.                 4,通过引擎对符合规则的子串进行操作,比如取出。

  17. */
  18. import java.util.regex.*;
  19. class  RegexDemo
  20. {
  21.         public static void main(String[] args)
  22.         {
  23.                 checkQQ();
  24.                 splitDemo("zhangsan.lisi.wangwu","\\.");
  25.                 splitDemo("erkktyqqquizzzzzo","(.)\\1+");//按照叠词完成切割。为了可以让规则的结果被重用,
  26.                                                                                                  // 可以将规则封装成一个组。用()完成。组的出现都有编号。

  27.                 String str = "wer1389980000ty1234564uiod234345675f";//将字符串中的数组替换成#。
  28.                
  29.                 replaceAllDemo(str,"\\d{5,}","#");

  30.                 String str1 = "erkktyqqquizzzzzo"; //将重叠的字符替换成单个字母。zzzz->z,封装成组,用$表示
  31.                 replaceAllDemo(str1,"(.)\\1+","$1");
  32.                 getDemo();
  33.                
  34.         }
  35.         public static void getDemo()    //获取演示
  36.         {
  37.                 String str = "ming tian jiu yao fang jia le ,da jia。";
  38.                
  39.                 System.out.println(str);
  40.                
  41.                 String reg = "\\b[a-z]{4}\\b";     //获取连续出现4个字母的字符串,\b为字符边界
  42.                
  43.                 Pattern p = Pattern.compile(reg);  //将规则封装成对象。关键字Pattern对象compile方法
  44.                
  45.                 Matcher m  = p.matcher(str);//让正则对象和要作用的字符串相关联。获取匹配器对象。matcher方法
  46.                
  47.                 while(m.find()) //将规则作用到字符串上,并进行符合规则的子串查找。
  48.                 {
  49.                         System.out.println(m.group());
  50.                        
  51.                 }
  52.         }

  53.         public static void replaceAllDemo(String str,String reg,String newStr)
  54.         {
  55.                 str = str.replaceAll(reg,newStr);

  56.                 System.out.println(str);
  57.         }



  58.         public static void splitDemo(String str,String reg)
  59.         {
  60.                 String[] arr = str.split(reg);  
  61.                 System.out.println(arr.length);
  62.                 for(String s : arr)
  63.                 {
  64.                         System.out.println(s);
  65.                 }
  66.         }

  67.        
  68.         public static void checkQQ()
  69.         {
  70.                 String qq = "123a454";

  71.                 String regex = "[1-9]\\d{4,14}";//不可以0开头第一位[1-9],声音4-14位用\\d{4,14}表示

  72.                 boolean flag = qq.matches(regex);
  73.                 if(flag)
  74.                         System.out.println(qq+"...is ok");
  75.                 else
  76.                         System.out.println(qq+"... 不合法");

  77.         }
  78. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2