Regex學習(Java)

來源:互聯網
上載者:User

       花了一個晚上的時間,把JavaRegex的視頻又重新看了一遍。然後寫了個小程式測試了一下。還有一些比較特殊的文法沒有測試,大概瞭解了一下。需要用到時再去看吧。Regex理解不難,但要用到熟練無比,出神入化,還是有難度的。

public class Test1 {<br />/*<br /> * 測試 Regex文法<br /> */<br />public static void main(String[] args){<br />Test1 t = new Test1();<br />t.testXieGang();//測試 斜杠 /<br />t.testReplaceAll();//測試 String 類的 replace 方法<br />t.testZhongKuoHao();//測試 []<br />t.testPreDefChar(); // 測試 /s /w /d /S /D /W 大寫的表示相反<br />t.testBoundMatch(); // 測試邊界匹配<br />t.testLogic(); // 測試邏輯操作符<br />}<br />private void testXieGang(){<br />/*<br /> * 字串是表示一個連續的字元序列,在程式中我們用類String來描述一個字串,<br /> * 這個用String描述的字串與實際的字串是不一定完全一樣的。比如在字串中雙引號怎麼表示?某些空白字元怎麼表示,所以我們必須在<br /> * String類中引入 逸出字元的概念,也就是/。 比如說 String str = "ab/t/////"b" 實際上表示的是 ab//"b,這是一個7個字元的序列。<br /> * Regex是一個特殊的運算式,但也要遵守這些規定。比如 String str="////" 實際上是兩個一般字元 // ,然後用Regex來編譯它,<br /> * 就會認為只是一個/<br /> */<br />System.out.println("//".matches("////")); // true 兩個/ 必須用Regex中的//// 表示<br />System.out.println("//n".matches("////n"));//true<br />String str = "ni/t//hao/"an";<br />System.out.println(str); // 輸出 ni/hao"an 這個才是實際字串<br />System.out.println(str.matches(".{10}")); // TRUE str中是由10個字元組成的<br />}<br />private void testReplaceAll(){<br />String str = "niha+********oma?/t";<br />str = str.replaceAll("[?]", "");// 單獨的 ?(+*可以單獨用) 會出問題因為有特殊意義 用[] 括起來或者//?即可<br />System.out.println(str);// niha+********oma<br />str = str.replace("+", "");<br />System.out.println(str);//niha********oma<br />str = str.replace("*", "");<br />System.out.println(str);//nihaoma<br />System.out.println("92".matches("(//d+)"));// true 小括弧也是特殊字元<br />System.out.println("(92)".matches("//(//d+[)]"));// true 小括弧也是特殊字元,在Regex中 用[] 或者 //<br />}<br />private void testZhongKuoHao(){<br />String str = "da jia hao cai shi zhen de hao ";<br />String str1 = "aBDbcA";<br />System.out.println("a^c".matches("[a-z^A-Z]{3}")); //true ^只有放在[]裡面第一個位置 才是表示否定,否則就是一般字元<br />System.out.println("ABC".matches("[^a-zA-Z]{3}")); //false ^表示否定,It is false ;<br />System.out.println("abc".matches("[a-n&&g-z]{3}")+" "+"hin".matches("[a-n&&g-z]{3}"));// false true<br />System.out.println("efg".matches("[^a-d&&b-g]+")); //true a,b,c,d 都是FALSE e f g 是TRUE<br />System.out.println("bcd".matches("[a-d&&^b-g]+")); //true ^ 在中間只是一個一般字元<br />System.out.println("aaa".matches("[a-d&&[^b-g]]+"));//true 只有a 才是匹配的<br />}<br />private void testPreDefChar(){ // 測試預定字元類<br />System.out.println("a/n/ta/ta".replaceAll("//s", "")); //aaa 等價於[ /t/n/x0B/f/r]<br />System.out.println("(&((&^*^*^*Liujiyong814329735".replaceAll("//w","")); //(&((&^*^*^* 等價於 [a-zA-Z_0-9]<br />System.out.println("liu8143 ji29735 yong".replaceAll("//D", "")); //814329735<br />}<br />private void testBoundMatch(){ //測試邊界匹配<br />System.out.println("java (java)java/tjavajava,java".replaceAll("//bjava//b", ""));// ()javajava, /b表示單詞邊界<br />System.out.println("java (java)java/tjavajava,java".replaceAll("^java", "")); // (java)javajavajava,java ^表示字串開頭<br />System.out.println("java (java)java/tjavajava,java".replaceAll("java$", "")); //java (java)javajavajava, $表示字串開頭<br />}<br />private void testLogic(){//測試邏輯符 |<br />System.out.println("256".matches("(//d{1,2})|(1//d{2})|(2[0-4]//d)|(25[0-5])"));//false<br />System.out.println("0".matches("(//d{1,2})|(1//d{2})|(2[0-4]//d)|(25[0-5])"));//true<br />System.out.println("56".matches("(//d{1,2})|(1//d{2})|(2[0-4]//d)|(25[0-5])"));//true<br />System.out.println("156".matches("(//d{1,2})|(1//d{2})|(2[0-4]//d)|(25[0-5])"));//true<br />System.out.println("255".matches("(//d{1,2})|(1//d{2})|(2[0-4]//d)|(25[0-5])"));//true<br />System.out.println("99".matches("//d{1,2}|1//d{2}|2[0-4]//d|25[0-5]")); // true<br />System.out.println("255.192.0.1".matches("((//d{1,2}|1//d{2}|2[0-4]//d|25[0-5])//.){3}(//d{1,2}|1//d{2}|2[0-4]//d|25[0-5])")); // true ipRegex</p><p>System.out.println("b".matches("[a-d&&b-g]")); //TRUE b c d 會匹配這個Regex<br />System.out.println("a&&b".matches("a&&b")); //TRUE 在[]外面 && 只是一般字元<br />//System.out.println("a".matches("a|bc|c")); // true<br />//System.out.println("bcd".matches("a|bc|c"));// false<br />//System.out.println("c".matches("a|bc|c"));// true<br />//System.out.println("92".matches("//d{1,2}"));// true<br />}<br />}<br />

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.