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

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

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

    和風細雨

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

    正則表達式進階

    通配符^

    ^表示模式的開始,如^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 + "失敗");
          }
        }

    通配符$

    $表示模式的結束,如ia$匹配所有以ia結尾的單詞.
     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次或一次外,還可以用{}來指定精確指定出現的次數,X{2,5}表示X最少出現2次,最多出現5次;X{2,}表示X最少出現2次,多則不限;X{5}表示X只精確的出現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) 編譯模式,參數regex表示輸入的正則表達式,flag表示模式類型(Pattern.CASE_INSENSITIVE 表示不區分大小寫)
    Matcher match(CharSequence input) 獲取匹配器,input時輸入的待處理的字符串
    static boolean matches(String regex, CharSequence input) 快速的匹配調用,直接根據輸入的模式regex匹配input
    String[] split(CharSequence input,int limit) 分隔字符串input,limit參數可以限制分隔的次數

    模式類型Pattern.CASE_INSENSITIVE

    正則表達式默認都是區分大小寫的,使用了Pattern.CASE_INSENSITIVE則不對大小寫進行區分.

     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方法示例

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

    String input="職務=GM 薪水=50000 , 姓名=職業經理人 ; 性別=男  年齡=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() 對整個輸入字符串進行模式匹配.
    boolean lookingAt() 從輸入字符串的開始處進行模式匹配
    boolean find(int start) 從start處開始匹配模式
    int groupCount() 返回匹配后的分組數目
    String replaceAll(String replacement) 用給定的replacement全部替代匹配的部分
    String repalceFirst(String replacement) 用給定的replacement替代第一次匹配的部分
    Matcher appendReplacement(StringBuffer sb,String replacement) 根據模式用replacement替換相應內容,并將匹配的結果添加到sb當前位置之后
    StringBuffer appendTail(StringBuffer sb) 將輸入序列中匹配之后的末尾字串添加到sb當前位置之后.

    匹配示例一: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));
    }

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

        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 和風細雨 閱讀(553) 評論(0)  編輯  收藏 所屬分類: 正則表達式


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


    網站導航:
     
    主站蜘蛛池模板: www国产亚洲精品久久久| 国产va免费精品观看精品| 亚洲Av无码乱码在线播放| 亚洲AV日韩AV一区二区三曲| 成人网站免费观看| 四虎亚洲精品高清在线观看| 成人au免费视频影院| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 一二三四免费观看在线视频中文版| 久久久无码精品亚洲日韩京东传媒| 无码人妻丰满熟妇区免费| 亚洲色欲或者高潮影院| 男女免费观看在线爽爽爽视频| 亚洲av永久无码嘿嘿嘿| 四虎影院在线免费播放| 美女被爆羞羞网站在免费观看| 亚洲精品tv久久久久| 中文无码成人免费视频在线观看| 久久精品亚洲综合| 波多野结衣免费在线| 亚洲AV无码之国产精品| 国产亚洲午夜高清国产拍精品| 日本免费一区二区三区| 亚洲男人天堂2022| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 免费鲁丝片一级观看| 成人久久久观看免费毛片| 国产AV无码专区亚洲AV毛网站| 在线成人爽a毛片免费软件| 亚洲精品无码久久| 国产亚洲色婷婷久久99精品91| 99精品视频免费在线观看| 亚洲最大成人网色香蕉| 四虎永久在线精品免费影视| 手机看片国产免费永久| 亚洲天堂2016| 4338×亚洲全国最大色成网站| 久久综合给合久久国产免费| 亚洲大尺度无码无码专线一区| 亚洲欧洲日产国码av系列天堂| 日韩亚洲国产高清免费视频|