<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)航:
     
    主站蜘蛛池模板: 亚洲Av无码乱码在线znlu| 一级毛片免费播放男男| 四虎在线最新永久免费| 亚洲av不卡一区二区三区| a级黄色毛片免费播放视频| 亚洲熟妇无码AV在线播放| 久久精品国产影库免费看| 久久99国产亚洲高清观看首页| 99精品视频免费| 久久精品亚洲中文字幕无码网站 | 亚洲综合在线视频| 免费人成在线观看网站品爱网| 午夜亚洲AV日韩AV无码大全| 99精品在线免费观看| 亚洲精品456人成在线| 国产精品久免费的黄网站| 人禽伦免费交视频播放| 亚洲精品自在在线观看| 51精品视频免费国产专区| 亚洲日韩国产精品乱-久| 免费在线不卡视频| 免费观看一区二区三区| 亚洲欧洲日韩综合| 日韩一区二区三区免费体验| 国产福利免费视频 | 久久精品国产亚洲AV| 亚洲精品麻豆av| 日韩免费人妻AV无码专区蜜桃 | 亚洲AV日韩AV永久无码免下载| 99视频在线免费| 亚洲国产成人精品无码区花野真一| 又粗又大又硬又爽的免费视频| a级毛片毛片免费观看久潮| 亚洲伊人久久大香线蕉| 四虎影视永久免费观看地址| 久久狠狠躁免费观看| 亚洲精品精华液一区二区| 亚洲精品卡2卡3卡4卡5卡区| 好男人www免费高清视频在线| 一级毛片免费一级直接观看| 亚洲成在人线中文字幕|