正則表達式及其示例.ppt_第1頁
正則表達式及其示例.ppt_第2頁
正則表達式及其示例.ppt_第3頁
正則表達式及其示例.ppt_第4頁
正則表達式及其示例.ppt_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

正則表達式及其示例,傳智播客視頻+自己總結(jié) 很全面 很有借鑒價值 劉汪洋 2012.7.30,邊界匹配器, 行的開頭 $ 行的結(jié)尾 b 單詞邊界 B 非單詞邊界 A 輸入的開頭 G 上一個匹配的結(jié)尾 Z 輸入的結(jié)尾,僅用于最后的結(jié)束符(如果有的話) z 輸入的結(jié)尾,字符,x 字符 x 反斜線字符 t 制表符 (u0009) n 新行(換行)符 (u000A) r 回車符 (u000D) f 換頁符 (u000C) a 報警 (bell) 符 (u0007) e 轉(zhuǎn)義符 (u001B) cx 對應(yīng)于 x 的控制符,字符類,abc a、b 或 c(簡單類) abc 任何字符,除了 a、b 或 c(否定) a-zA-Z a 到 z 或 A 到 Z,兩頭的字母包括在內(nèi)(范圍) a-dm-p a 到 d 或 m 到 p:a-dm-p(并集) a-z&def d、e 或 f(交集) a-z&bc a 到 z,除了 b 和 c:ad-z(減去) a-z&m-p a 到 z,而非 m 到 p:a-lq-z(減去),預(yù)定義字符類,. 任何字符(與行結(jié)束符可能匹配也可能不匹配) d 數(shù)字:0-9 D 非數(shù)字: 0-9 s 空白字符: tnx0Bfr S 非空白字符:s w 單詞字符:a-zA-Z_0-9 W 非單詞字符:w,Greedy 數(shù)量詞,X? X,一次或一次也沒有 X* X,零次或多次 X+ X,一次或多次 Xn X,恰好 n 次 Xn, X,至少 n 次 Xn,m X,至少 n 次,但是不超過 m 次,Logical 運算符,XY X 后跟 Y X|Y X 或 Y (X) X,作為捕獲組,字符類運算符的優(yōu)先級,如下所示,按從最高到最低的順序排列: 1 字面值轉(zhuǎn)義 x 2 分組 . 3 范圍 a-z 4 并集 a-ei-u 5 交集 a-z&aeiou,組和捕獲,捕獲組可以通過從左到右計算其開括號來編號。例如,在表達式 (A)(B(C) 中,存在四個這樣的組: 1 (A)(B(C) 2 A 3 (B(C) 4 (C) 組零始終代表整個表達式。 之所以這樣命名捕獲組是因為在匹配中,保存了與這些組匹配的輸入序列的每個子序列。捕獲的子序列稍后可以通過 Back 引用在表達式中使用,也可以在匹配操作完成后從匹配器獲取。,正則表達式中組的概念,() n 任何匹配的 nth 捕獲組 捕獲組可以通過從左到右計算其開括號來編號。例如,在表達式 (A)(B(C) 中,存在四個這樣的組: 1 (A)(B(C) 2 A 3 (B(C) 4 (C) 組零始終代表整個表達式。 (A)(B(C) 1表示第一個括號 $1另參數(shù)引用 1 2 3 4 從左向右的順序,匹配-校驗手機號,例如 String tel =; String regux = “13580-99”; boolean b=tel.matchs(gre); System.out.println(b); 也可將 regux =“1358d9”;,切割,String tel =“zhangsan lisi wangwu”; String regux = “ +”; String names = tel.split(regux); for(String name:names) System.out.println(name); 也可以寫成String regux = “ s+”;,正則表達式 切割,String tel =“zhangsanttttlisigggggggwangwu”; String regux = “(.)1+”; String names = tel.split(regux); for(String name:names) System.out.println(name); ()表示組 1表示第一組(第一個括號的內(nèi)容,需要轉(zhuǎn)移),正則表達式 替換,將重復(fù)的字符替換成#號 String str =“zhangsanttttlisigggggggwangwu”; str = str.replaceAll(“(.)1+,”#”); System.out.println(str1 );,將重復(fù)的字符換成單個,String str =“zhangsanttttlisigggggggwangwu”; str = str.replaceAll(“(.)1+”,”$1”); System.out.println(str1 ); ”$1”的意思是 獲取前一個參數(shù)中的第一組,電話號碼部分位數(shù)替換為*,效果187*252 String tel =“; tel = tel.replaceAll(“(d3)d5(d3)”),”$1*$2”; System.out.println(tel);,正則表達式獲取,Pattern p = Ppile(“a*b“); 將正則規(guī)則進行對象的封裝 Matcher m = p.matcher(“aaaaab“); 通過正則對象的 Matcher 方法 與字符串相關(guān)聯(lián)。獲取要對字符串操作的匹配器對象Matcher 方法。 boolean b = m.matches(); 通過匹配器對象方法 對字符串進行操作。,String words = “There is a dog on the desk!”; String regex =“ba-z3b”;需有單詞邊界 /將正則封裝成對象 Pattern p = Ppile(regex); /通過正則表達式獲取匹配器對象 Matcher m = p.matcher(words); /使用Matcher方法對字符串進行操作 While(m.find() System.out.println(m.group();,基本方法,int start() 返回以前匹配的初始索引。 String replaceAll(String replacement) String group() 返回由以前匹配操作所匹配的輸入子序列 int end() 返回最后匹配字符之后的偏移量。 boolean find() 嘗試查找與該模式匹配的輸入序列的下一個子序列。,/*將“口吃”的話,改為正常*/,public static void demo_one() String str =“給.給我的的的的的.手手手手手機“; /將其中的 逗號去掉 str = str.replaceAll(“(.)+“, “); System.out.println(str); / 去掉重復(fù)的漢字 str= str.replaceAll(“(.)1+“, “$1“); System.out.println(str); ,ip 地址排序,public static void demo_two() String str =“3 55 4“; /補零 str = str.replaceAll(“(d+)“, “00$1“); / 防止位數(shù)高于三位 取后三位(高出的位數(shù)都是零) str= str.replaceAll(“0+(d3)“, “$1“); /將每個ip 地址分隔開來 String ips = str.split(“ +“); /添加到集合 TreeSet ipsort = new TreeSet(); for (String ip:ips) ipsort.add(ip); /打印原有IP地址 for (String ip:ipsort) System.out.println(ip.replaceAll(“0*(d+)“, “$1“)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論