正則表達式(RegularExpressions)-- 字符串處理利器

作用:字符串匹配、字符串查找、字符串替換;

    類:java.lang.Stringjava.util,regex.Patternjava.util.regex.Matcher;

    簡單認識:

        p("abc".matches("..."));//true

       p("a232333a".replaceAll("//d", "-"));//將數字替換成“-

        Pattern p = Pattern.compile("[a-z]{3}");

       Matcher m = p.matcher("fgh");

       p(m.matches());

       p("fgh".matches("[a-z]{3}"));//等價於上面三句。區別在於上面三句已經編

                                   //譯好了,因此執行起來會更快。

 

       public static void p(Object obj) {

           System.out.println(obj);

       }

    打印結果:

       true

a------a

true

true

    進一步認識:

       p("a".matches("."));       

       p("aa".matches("aa"));         

       p("aaaa".matches("a*"));

       p("".matches("a*"));          //X*    X, zero or more times

       p("aaaa".matches("a+"));    //X+     X, one or more times

       p("".matches("a+"));

       p("aaaa".matches("a?"));    // X?    X, once or not at all

       p("".matches("a?"));        

       p("a".matches("a?"));

p("214523123123456".matches("//d{3,100}")); p("192.168.0.aaa".matches("//d{1,3}//.//d{1,3}//.//d{1,3}//.//  d{1,3}"));   //false

       p("192".matches("[0-2][0-9][0-9]"));//true

       /*Greedy quantifiers 

       X{n} X, exactly n times

       X{n,} X, at least n times

       X{n,m} X, at least n but not more than m times */

   範圍:(只匹配一個字符)

p("a".matches("[abc]"));

       p("a".matches("[^abc]"));

       p("A".matches("[a-zA-Z]"));

       p("A".matches("[a-z[A-Z]]"));

       p("A".matches("[a-z]|[A-Z]"));

p("R".matches("[A-Z&&[RFG]]"));

    將一個四則表達式按照非數字作爲界限分開:

       public class TestExpression {

           public static void main(String[] args) {

           String str = "1111+22*23-3+27/3=";

           //String[] sSplitNum = str.split("[^1234567890]");

           //String[] sSplitNum = str.split("[^//d]");

           //String[] sSplitNum = str.split("[^0-9]");

           String[] sSplitNum = str.split("//D");

           for(int i=0; i<sSplitNum.length; i++) {

               System.out.println(sSplitNum[i]);

              }

           }

}

注:這裏還要順便注意下split這個函數,如果是要以一個字符分開給定的字符串,如字符串“127.0.0.1“要以“.“分開,那麼就必須寫成”//.”,即:

String IP = “127.0.0.1”;

String[] ipStr = IP.split(“//.”);

 

運用正則表達式匹配一個反斜槓“/“:

System.out.println("//".matches("////"));

 

  測試一個字符串是不是隻含有數字:

p("123323421".matches("[0-9]+"));

       p("2323423".matches("//d+"));

p("1212".matches("[//d]+"));

結果都爲true;

JavaScript中的“正則表達式“

    Java的正則表達式規則相類似,只要在匹配的模式前後加上”/”即可。如:

    判斷一個變量是不是一個實數:

    var str = /^/d+(./d+)?$/;

    str.test(string);    //string爲要匹配的字符串

    其中,”^” 表示行的開頭;”$”表示行的結尾;是不是一個整數:/^/d+$/

    故其格式爲:/^(匹配的模式)$/

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章