国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

正則表達(dá)式概述及在JAVA中的使用

2019-11-18 11:49:21
字體:
供稿:網(wǎng)友

  概述
  
  你是否使用過查找*.tmp臨時文件
  
  你是否使用過編輯工具中的查找/替換功能
  
  其實它們都使用了正則表達(dá)式
  
  正則表達(dá)式的作用
  
  提供更強(qiáng)大的字符串處理能力
  
  測試字符串內(nèi)的模式
  
  例如,可以測試輸入字符串,以查看字符串內(nèi)是否出現(xiàn)電話號碼模式或身份證號碼模式。即數(shù)據(jù)驗證
  
  替換文本
  
  可以使用正則表達(dá)式來識別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。
  
  基于模式匹配從字符串中提取子字符串
  
  可以查找文檔內(nèi)或輸入域內(nèi)特定的文本。
  
  java中使用正則表達(dá)式
  
  正則表達(dá)式在字符串處理上有著強(qiáng)大的功能,sun在jdk1.4加入了對它的支持
  
  jdk1.4中加入了java.util.regex包提供對正則表達(dá)式的支持。而且Java.lang.String類中的replaceAll和split函數(shù)也是調(diào)用的正則表達(dá)式來實現(xiàn)的。
  
  正則表達(dá)式對字符串的操作主要包括:
  
  1.字符串匹配
  
  2.指定字符串替換
  
  3.指定字符串查找
  
  4.字符串分割
  
  Pattern類
  
  Pattern類的實例表示以字符串形式指定的正則表達(dá)式,其語 法類似于Perl所用的語法。
  
  用字符串形式指定的正則表達(dá)式,必須先編譯成Pattern類的 實例。生成的模式用于創(chuàng)建Matcher對象,它根據(jù)正則表達(dá)式與任 意字符序列進(jìn)行匹配。多個匹配器可以共享一個模式,因為它是非專屬的
  
  用compile方法把給定的正則表達(dá)式編譯成模式,然后用 matcher方法創(chuàng)建一個匹配器,這個匹配器將根據(jù)此模式對給定輸 入進(jìn)行匹配。pattern 方法可返回編譯這個模式所用的正則表達(dá) 式。
  
  Matcher類
  
  通過調(diào)用某個模式的matcher方法,從這個模式生成匹配器。 匹配器創(chuàng)建之后,就可以用它來執(zhí)行三類不同的匹配操作:
  
  matches方法根據(jù)此模式,對整個輸入序列進(jìn)行匹配
  
  lookingAt方法根據(jù)此模式,從開始處對輸入序列進(jìn) 行匹配。
  
  find方法掃描輸入序列,尋找下一個與模式匹配的地方
  
  這些方法都會返回一個表示成功或失敗的布爾值。假如匹配成功,通過查詢 匹配器的狀態(tài),可以獲得更多的信息
  
  構(gòu)建正則表達(dá)式
  
  /d 等於 [0-9] 數(shù)字
  
  /D 等於 [^0-9] 非數(shù)字
  
  /s 等於 [ /t/n/x0B/f/r] 空白字符
  
  /S 等於 [^ /t/n/x0B/f/r] 非空白字符
  
  /w 等於 [a-zA-Z_0-9] 數(shù)字或是英文字
  
  /W 等於 [^a-zA-Z_0-9] 非數(shù)字與英文字
  
  $ 表示每行的結(jié)尾
  
  . 匹配所有字符,包括空格、Tab字符甚至換行符
   或
  
  []方括號只答應(yīng)匹配單個字符
  
  ^ 符號稱為“否”符號。假如用在方括號內(nèi),表示不想要匹配的字符。 表示每行的開頭
  
  ( ) 形成一組
  
  查詢
  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);//創(chuàng)建一個匹配器
  boolean rs=m.find();
  if(rs)
  {
  System.out.  }
  else
  {
  System.out.println("no include!!!");
  }
  }
  }
  
  假如str中有regEx,那么rs為true,否則為flase。假如想在查找時忽略大小寫,則可以寫成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);
  
  提取
  
  (從本例給出所給完整路徑中提取文件名)im()p(ort java.util.rege
  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));
  }
  }
  }
  
  以上的執(zhí)行結(jié)果為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]);
  }
  }
  }
  
  執(zhí)行后,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);
  }
  }
  
  結(jié)果為"Abbced A ccdeA"
  
  假如寫成空串,既可達(dá)到刪除的功能,比如:
  String s=m.replaceAll("");
  
  結(jié)果為"bbced ccde"

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 五家渠市| 连江县| 始兴县| 新兴县| 镇江市| 郑州市| 五台县| 荆州市| 利川市| 东丰县| 钟山县| 呼伦贝尔市| 读书| 大名县| 临海市| 射阳县| 鱼台县| 京山县| 衡山县| 富平县| 罗城| 静乐县| 临湘市| 秦皇岛市| 永清县| 临朐县| 普兰店市| 玉龙| 吐鲁番市| 加查县| 通渭县| 宝坻区| 淳安县| 商都县| 扎赉特旗| 随州市| 贵阳市| 黄龙县| 萝北县| 合山市| 渑池县|