久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Java正則表達(dá)式基礎(chǔ)入門知識

      眾所周知,在程序開發(fā)中,難免會遇到需要匹配、查找、替換、判斷字符串的情況發(fā)生,而這些情況有時(shí)又比較復(fù)雜,如果用純編碼方式解決,往往會浪費(fèi)程序員的時(shí)間及精力。因此,學(xué)習(xí)及使用正則表達(dá)式,便成了解決這一矛盾的主要手段。

      大家都知道,正則表達(dá)式是一種可以用于模式匹配和替換的規(guī)范,一個(gè)正則表達(dá)式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)組成的文字模式,它 用以描述在查找文字主體時(shí)待匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。

      一:什么是正則表達(dá)式

          1.定義:正則表達(dá)式是一種可以用于模式匹配和替換的規(guī)范,一個(gè)正則表達(dá)式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)組成的文字模式,它 用以描述在查找文字主體時(shí)待匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。

          2.用途:

      字符串匹配(字符匹配)

      字符串查找

      字符串替換

      字符串分割

          例如:

      從網(wǎng)頁中揪出email地址

      IP地址是否正確

      從網(wǎng)頁中揪出鏈接

          3.java中處理正則表達(dá)式的類:

      java.lang.String

      java.util.regex.Pattern:模式類:字符串要被匹配的這么一個(gè)模式,該模式本身已經(jīng)被編譯過,使用的話效率要高很多。

      java.util.regex.Matcher:匹配類:這個(gè)模式匹配某個(gè)字符串所產(chǎn)生的結(jié)果,這個(gè)結(jié)果可能會有很多個(gè)。

          4:下面通過一個(gè)小程序簡單介紹一下正則表達(dá)式

        import java.util.regex.Matcher;  import java.util.regex.Pattern;  public class Test {   public static void main(String[] args) {    //matches()判斷字符串是否匹配某個(gè)表達(dá)式,"."表示任何一個(gè)字符    p("abc".matches("..."));    //將字符串"a2389a"中的數(shù)字用*替換,d 表示“0--9”數(shù)字    p("a2389a".replaceAll("\d", "*"));    //將任何是a--z的字符串長度為3的字符串進(jìn)行編譯,這樣可以加快匹配速度    Pattern p = Pattern.compile("[a-z]{3}");    //進(jìn)行匹配,并將匹配結(jié)果放在Matcher對象中    Matcher m = p.matcher("abc");    p(m.matches());    //上面的三行代碼可以用下面一行代碼代替    p("abc".matches("[a-z]{3}"));   }   public static void p(Object o){    System.out.println(o);   }  } 

      下面是打印結(jié)果

      true
      a****a
      true
      true

       現(xiàn)在通過一些實(shí)驗(yàn)來說明正則表達(dá)式的匹配規(guī)則,這兒是Greedy方式

        .              任何字符

       a?             a一次或一次也沒有

       a*             a零次或多次

       a+            a一次或多次

       a{n}?      a恰好 n 次

       a{n,}?       a至少n次

       a{n,m}?   a至少n次,但是不超過m次

              //初步認(rèn)識. * + ?
              p(“a”.matches(“.”));//true
              p(“aa”.matches(“aa”));//true
              p(“aaaa”.matches(“a*”));//true
              p(“aaaa”.matches(“a+”));//true
              p(“”.matches(“a*”));//true
              p(“aaaa”.matches(“a?”));//false
              p(“”.matches(“a?”));//true
              p(“a”.matches(“a?”));//true
              p(“1232435463685899”.matches(“\d{3,100}”));//true
              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

      [abc]                        a、b 或 c(簡單類)

      [^abc]                      任何字符,除了 a、b 或 c(否定)

      [a-zA-Z]                   a 到 z 或 A 到 Z,兩頭的字母包括在內(nèi)(范圍)

      [a-d[m-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](減去)

              //范圍

              p(“a”.matches(“[abc]”));//true
              p(“a”.matches(“[^abc]”));//false
              p(“A”.matches(“[a-zA-Z]”));//true
              p(“A”.matches(“[a-z]|[A-Z]”));//true
              p(“A”.matches(“[a-z[A-Z]]”));//true
              p(“R”.matches(“[A-Z&&[RFG]]”));//true

      d                          數(shù)字:[0-9]

      D                         非數(shù)字: [^0-9]

      s                          空白字符:[ tnx0Bfr]

      S                         非空白字符:[^s]

      w                         單詞字符:[a-zA-Z_0-9]

      W                        非單詞字符:[^w]

               //認(rèn)識s w d
              p(“nrt”.matches(“\s(4)”));//false
              p(” “.matches(“\S”));//false
              p(“a_8 “.matches(“\w(3)”));//false
              p(“abc888&^%”.matches(“[a-z]{1,3}\d+[&^#%]+”));//true
              p(“\”.matches(“\\”));//true

       邊界匹配器

            ^                                          行的開頭

            $                                          行的結(jié)尾

            b                                        單詞邊界

            B                                        非單詞邊界

            A                                        輸入的開頭

            G                                       上一個(gè)匹配的結(jié)尾

            Z                                       輸入的結(jié)尾,僅用于最后的結(jié)束符(如果有的話)

            z                                       輸入的結(jié)尾

              //邊界匹配
              p(“hello sir”.matches(“^h.*”));//true
              p(“hello sir”.matches(“.*ir$”));//true
              p(“hello sir”.matches(“^h[a-z]{1,3}o\b.*”));//true
              p(“hellosir”.matches(“^h[a-z]{1,3}o\b.*”));//false
              //空白行:一個(gè)或多個(gè)(空白并且非換行符)開頭,并以換行符結(jié)尾
              p(” n”.matches(“^[\s&&[^\n]]*\n$”));//true

       方法解析

      matches():匹配整個(gè)字符串

      find():匹配子字符串

      lookingAt():永遠(yuǎn)從整個(gè)字符串的開頭開始匹配

      //email
              p(“asdsfdfagf@adsdsfd.com”.matches(“[\w[.-]]+@[\w[.-]]+\.[\w]+”));//true
             
              //matches() find() lookingAt()
              Pattern p = Pattern.compile(”         Matcher m = p.matcher(“123-34345-234-00”);
             
              //將整個(gè)”123-34345-234-00″用正則表達(dá)式引擎查找匹配,當(dāng)?shù)降谝粋€(gè)”-“不匹配了,就停止,
              //但不會將不匹配的”-“吐出來
              p(m.matches());
              //將不匹配的”-“吐出來
              m.reset();
             
              //1:當(dāng)前面有p(m.matches());查找子字符串從”…34345-234-00″開始
              //將會是第1,2兩個(gè)查到”34345″和”234″ 后面2個(gè)查不到為false
              //2:當(dāng)前面有p(m.matches());和m.reset();查找子字符串從”123-34345-234-00″開始
              //將為true,true,true,false
              p(m.find());
              p(m.start()+”—“+m.end());
              p(m.find());
              p(m.start()+”—“+m.end());
              p(m.find());
              p(m.start()+”—“+m.end());
              p(m.find());
              //要是沒找到就會報(bào)異常java.lang.IllegalStateException
              //p(m.start()+”—“+m.end());
             
              p(m.lookingAt());
              p(m.lookingAt());
              p(m.lookingAt());
              p(m.lookingAt());

      字符串替換:下面這種方法對于字符串替換非常靈活

              //字符串替換
              //Pattern.CASE_INSENSITIVE大小寫不敏感
              Pattern p = Pattern.compile(“java”,Pattern.CASE_INSENSITIVE);
              Matcher m = p.matcher(“java Java jAva ILoveJavA youHateJAVA adsdsfd”);
              //存放字符串
              StringBuffer  buf = new StringBuffer();
              //計(jì)數(shù)奇偶數(shù)
              int i  = 0;
              while(m.find()){
                  i++;
                  if(i%2 == 0){
                      m.appendReplacement(buf, “java”);
                  }else{
                      m.appendReplacement(buf, “JAVA”);
                  }
              }
              //不加這句話,字符串a(chǎn)dsdsfd將會被遺棄
              m.appendTail(buf);
              p(buf);

      結(jié)果打?。?/p>

      JAVA java JAVA ILovejava youHateJAVA adsdsfd

      分組

              //group分組,用()分組
              Pattern p = Pattern.compile(“(         String s = “123aa-34345bb-234cc-00”;
              Matcher m = p.matcher(s);
              p(m.groupCount());//2組
              while(m.find()){
                  p(m.group());//數(shù)字字母都有
                  //p(m.group(1));//只有數(shù)字
                  //p(m.group(2));//只有字母
              }

      二、正則表達(dá)式簡單使用

      java正則表達(dá)式使用

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號