<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    和風(fēng)細(xì)雨

    世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運(yùn)用之術(shù)自出。

    正則表達(dá)式進(jìn)階

    通配符^

    ^表示模式的開始,如^he匹配所有以he開頭的字符串.
    例程:
     String[] dataArr = { "he", "hero", "here", "hitler"};

        for (String str : dataArr) {
          String patternStr = "(^he)(\\w*)";

          boolean result = Pattern.matches(patternStr, str);
          if (result) {
            System.out.println("字符串" + str + "匹配模式" + patternStr + "成功");
          } else {
            System.out.println("字符串" + str + "匹配模式" + patternStr + "失敗");
          }
        }

    通配符$

    $表示模式的結(jié)束,如ia$匹配所有以ia結(jié)尾的單詞.
     String[] dataArr = { "ia", "Asia", "China", "Colonbia","America"};

        for (String str : dataArr) {
          String patternStr = "(\\w*)(ia$)";

          boolean result = Pattern.matches(patternStr, str);
          if (result) {
            System.out.println("字符串" + str + "匹配模式" + patternStr + "成功");
          } else {
            System.out.println("字符串" + str + "匹配模式" + patternStr + "失敗");
          }
        }

    通配符{}

    除了用+表示一次或多次,*表示0次或多次,?表示0次或一次外,還可以用{}來指定精確指定出現(xiàn)的次數(shù),X{2,5}表示X最少出現(xiàn)2次,最多出現(xiàn)5次;X{2,}表示X最少出現(xiàn)2次,多則不限;X{5}表示X只精確的出現(xiàn)5次.
    例程:
    String[] dataArr = { "google", "gooogle", "gooooogle", "goooooogle","ggle"};

    for (String str : dataArr) {
     String patternStr = "g(o{2,5})gle";

     boolean result = Pattern.matches(patternStr, str);
     if (result) {
      System.out.println("字符串" + str + "匹配模式" + patternStr + "成功");
     } else {
      System.out.println("字符串" + str + "匹配模式" + patternStr + "失敗");
     }
    }

    通配符[]中的-

    -表示從..到…,如[a-e]等同于[abcde]
     String[] dataArr = { "Tan", "Tbn", "Tcn", "Ton","Twn"};

        for (String str : dataArr) {
          String regex = "T[a-c]n";

          boolean result = Pattern.matches(regex, str);
          if (result) {
            System.out.println("字符串" + str + "匹配模式" + regex + "成功");
          } else {
            System.out.println("字符串" + str + "匹配模式" + regex + "失敗");
          }
        }

    Pattern類的方法簡述
    方法 說明
    static Pettern compile(String regex,int flag) 編譯模式,參數(shù)regex表示輸入的正則表達(dá)式,flag表示模式類型(Pattern.CASE_INSENSITIVE 表示不區(qū)分大小寫)
    Matcher match(CharSequence input) 獲取匹配器,input時輸入的待處理的字符串
    static boolean matches(String regex, CharSequence input) 快速的匹配調(diào)用,直接根據(jù)輸入的模式regex匹配input
    String[] split(CharSequence input,int limit) 分隔字符串input,limit參數(shù)可以限制分隔的次數(shù)

    模式類型Pattern.CASE_INSENSITIVE

    正則表達(dá)式默認(rèn)都是區(qū)分大小寫的,使用了Pattern.CASE_INSENSITIVE則不對大小寫進(jìn)行區(qū)分.

     String patternStr="ab";
        Pattern pattern=Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
       
        String[] dataArr = { "ab", "Ab", "AB"};
       
        for (String str : dataArr) {
          Matcher matcher=pattern.matcher(str);
         
          if(matcher.find()){
            System.out.println("字符串" + str + "匹配模式" + patternStr + "成功");
          }
        }

    Pattern的split方法示例

     注意這里要把復(fù)雜的模式寫在前面,否則簡單模式會先匹配上.

    String input="職務(wù)=GM 薪水=50000 , 姓名=職業(yè)經(jīng)理人 ; 性別=男  年齡=45 ";
        String patternStr="(\\s*,\\s*)|(\\s*;\\s*)|(\\s+)";
        Pattern pattern=Pattern.compile(patternStr);
       
        String[] dataArr=pattern.split(input);
       
        for (String str : dataArr) {
          System.out.println(str);
        }

    Matcher類的方法簡述
    方法 說明
    boolean matches() 對整個輸入字符串進(jìn)行模式匹配.
    boolean lookingAt() 從輸入字符串的開始處進(jìn)行模式匹配
    boolean find(int start) 從start處開始匹配模式
    int groupCount() 返回匹配后的分組數(shù)目
    String replaceAll(String replacement) 用給定的replacement全部替代匹配的部分
    String repalceFirst(String replacement) 用給定的replacement替代第一次匹配的部分
    Matcher appendReplacement(StringBuffer sb,String replacement) 根據(jù)模式用replacement替換相應(yīng)內(nèi)容,并將匹配的結(jié)果添加到sb當(dāng)前位置之后
    StringBuffer appendTail(StringBuffer sb) 將輸入序列中匹配之后的末尾字串添加到sb當(dāng)前位置之后.

    匹配示例一:XML元素文字解析

    String regex="<(\\w+)>(\\w+)</\\1>";
    Pattern pattern=Pattern.compile(regex);
       
    String input="<name>Bill</name><salary>50000</salary><title>GM</title>";
       
    Matcher matcher=pattern.matcher(input);
       
    while(matcher.find()){
          System.out.println(matcher.group(2));
    }

    替換實例一:將單詞和數(shù)字部分的單詞換成大寫

        String regex="([a-zA-Z]+[0-9]+)";  
        Pattern pattern=Pattern.compile(regex);
       
        String input="age45 salary500000 50000 title";
       
        Matcher matcher=pattern.matcher(input);
       
        StringBuffer sb=new StringBuffer();
       
        while(matcher.find()){
          String replacement=matcher.group(1).toUpperCase();
          matcher.appendReplacement(sb, replacement);
        }
        matcher.appendTail(sb);
       
        System.out.println("替換完的字串為"+sb.toString());

     

    posted on 2008-02-21 20:20 和風(fēng)細(xì)雨 閱讀(553) 評論(0)  編輯  收藏 所屬分類: 正則表達(dá)式


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲日韩乱码中文无码蜜桃臀网站| 亚洲精品老司机在线观看| 啦啦啦高清视频在线观看免费| 人人狠狠综合久久亚洲高清| 亚洲精品中文字幕无码蜜桃| 亚洲六月丁香婷婷综合| xxxxx做受大片视频免费| 成人浮力影院免费看| 亚洲欧洲日产国码无码网站 | 日韩视频在线观看免费| 免费黄色毛片视频| 亚洲AV成人片色在线观看| 亚洲av无码一区二区三区四区 | 中文字幕乱码亚洲无线三区| 成在人线av无码免费高潮水| 在线免费视频一区| 亚洲色图黄色小说| 伊人久久大香线蕉免费视频| 免费在线观看亚洲| 亚洲人成77777在线观看网| 免费无码A片一区二三区| 亚洲第一综合天堂另类专 | 大地资源中文在线观看免费版| 国产成人免费高清在线观看| 亚洲午夜精品在线| 久久99青青精品免费观看| 久久久久亚洲精品天堂久久久久久| 亚洲日本在线电影| 日本亚洲免费无线码| 亚洲小视频在线观看| 野花香高清视频在线观看免费| 亚洲国产精品无码久久九九| 亚洲av无码片vr一区二区三区| 免费在线黄色网址| 久久久久久久99精品免费| 亚洲乱码日产精品一二三| 亚洲一级黄色视频| 国产激情久久久久影院老熟女免费 | 亚洲综合久久精品无码色欲| 亚洲精品色婷婷在线影院| 免费A级毛片在线播放|