Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統計

          留言簿(23)

          積分與排名

          優秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          正則表達式的作用

          正則表達式的作用

          提供更強大的字符串處理能力,測試字符串內的模式,例如,可以測試輸入字符串,以查看字符串內是否出現電話號碼模式或身份證號碼模式。即數據驗證替換文本可以使用正則表達式來識別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。

          基于模式匹配從字符串中提取子字符串可以查找文檔內或輸入域內特定的文本。

          Java中使用正則表達式

          正則表達式在字符串處理上有著強大的功能,sun在jdk1.4加入了對它的支持,jdk1.4中加入了java.util.regex包提供對正則表達式的支持。而且Java.lang.String類中的replaceAll和split函數也是調用的正則表達式來實現的。

          正則表達式對字符串的操作主要包括:

          1.字符串匹配

          2.指定字符串替換

          3.指定字符串查找

          4.字符串分割

          Pattern類

          Pattern類的實例表示以字符串形式指定的正則表達式,其語 法類似于Perl所用的語法。

          用字符串形式指定的正則表達式,必須先編譯成Pattern類的 實例。生成的模式用于創建Matcher對象,它根據正則表達式與任 意字符序列進行匹配。多個匹配器可以共享一個模式,因為它是非專屬的。

          用compile方法把給定的正則表達式編譯成模式,然后用 matcher方法創建一個匹配器,這個匹配器將根據此模式對給定輸 入進行匹配。pattern 方法可返回編譯這個模式所用的正則表達式。

          Matcher類

          通過調用某個模式的matcher方法,從這個模式生成匹配器。 匹配器創建之后,就可以用它來執行三類不同的匹配操作:

          matches方法根據此模式,對整個輸入序列進行匹配。

          lookingAt方法根據此模式,從開始處對輸入序列進 行匹配。

          find方法掃描輸入序列,尋找下一個與模式匹配的地方。

          這些方法都會返回一個表示成功或失敗的布爾值。如果匹配成功,通過查詢 匹配器的狀態,可以獲得更多的信息。

          構建正則表達式

          \d 等於 [0-9] 數字

          \D 等於 [^0-9] 非數字

          \s 等於 [ \t\n\x0B\f\r] 空白字符

          \S 等於 [^ \t\n\x0B\f\r] 非空白字符

          \w 等於 [a-zA-Z_0-9] 數字或是英文字

          \W 等於 [^a-zA-Z_0-9] 非數字與英文字

          $ 表示每行的結尾 . 匹配所有字符,包括空格、Tab字符甚至換行符 或 []方括號只允許匹配單個字符 ^ 符號稱為否符號。如果用在方括號內,表示不想要匹配的字符。 表示每行的開頭 ( ) 形成一組查詢

          import java.util.regex.*;
                      public class RegexExample
                      {
                      public static void main(String[] args)
                      {
                      String str="aaabc efg ABC";
                      String regEx="aaafff";
                      Pattern p=Pattern.compile(regEx);//編譯成模式
                      Matcher m=p.matcher(str);//創建一個匹配器
                      boolean rs=m.find();
                      if(rs)
                      {
                      System.out.println("include!!!");
                      }
                      else
                      {
                      System.out.println("no include!!!");
                      }
                      }
                      }

           

          如果str中有regEx,那么rs為true,否則為flase。如果想在查找時忽略大小寫, 則可以寫成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE); 提取 (從本例所給完整路徑中提取文件名)

          import java.util.regex.*;
                      public class RegexExample2
                      {
                      public static void main(String[] args)
                      {
                      String regEx=".+\\\\(.+)$";
                      String str="c:\\dir1\\dir2\\name.txt";
                      Pattern p=Pattern.compile(regEx);
                      Matcher m=p.matcher(str);
                      boolean rs=m.find();
                      for(int i=1;i<=m.groupCount();i++)
                      {
                      System.out.println(m.group(i)); //括號內匹配內容
                      }
                      }
                      }

           

          以上的執行結果為name.txt,提取的字符串儲存在m.group(i)中,其中i最大值為m.groupCount(); 分割

          import java.util.regex.*;
                      public class RegexExample3
                      {
                      public static void main(String[] args)
                      {
                      String regEx="::";
                      Pattern p=Pattern.compile(regEx);
                      String[] r=p.split("xd::abc::cde");
                      for(int i=0;i<r.length;i++)
                      {
                      System.out.println(r[i]);
                      }
                      }
                      }

           

          執行后,r就是{xd,abc,cde},其實分割時還有跟簡單的方法:

          String str="xd::abc::cde";

          String[] r=str.split("::");

          替換(刪除)

          import java.util.regex.*;
                      public class RegexExample1
                      {
                      public static void main(String[] args)
                      {
                      String regEx="a+";//表示一個或多個a
                      Pattern p=Pattern.compile(regEx);
                      Matcher m=p.matcher("aaabbced a ccdeaa");
                      String s=m.replaceAll("A");
                      System.out.println(s);
                      }
                      }

           

          結果為"Abbced A ccdeA"

          如果寫成空串,既可達到刪除的功能,比如:

          String s=m.replaceAll("");

          結果為"bbced ccde"

          posted on 2007-11-23 12:47 都市淘沙者 閱讀(6342) 評論(1)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

          評論

          # re: 正則表達式的作用 2014-04-16 17:00 23

          23  回復  更多評論   

          主站蜘蛛池模板: 巫溪县| 韩城市| 昌都县| 定结县| 修文县| 定州市| 巩义市| 栾城县| 东明县| 富宁县| 尼玛县| 巴马| 裕民县| 泗洪县| 柘荣县| 横峰县| 富阳市| 江城| 台北市| 措勤县| 栾川县| 南阳市| 辽宁省| 女性| 永德县| 清远市| 达拉特旗| 靖州| 荆门市| 彩票| 宾阳县| 灌云县| 山丹县| 大庆市| 大足县| 乌兰县| 莆田市| 夏津县| 营山县| 固原市| 永仁县|