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

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

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

    零全零美(www.zzgwt.com)
    生活中的很多事情,并不像If...Else那么簡單!
    posts - 96,comments - 52,trackbacks - 0

    問題提出:將格式為:"25/10/2009"的時間轉換為"2009-10-25"的格式
    問題分析:
    1、年份2009、月份10、日25應該做為一個獨立的單位,這樣我們可以直接知道什么地方匹配的是年、月還是日
    2、可以用\d\d\d\d來匹配年份,用\d\d來匹配月份,用\d\d來匹配日
    3、應該可以有一個地方存儲匹配過的結果,以便于轉換
    解決問題所必須知道的:
    1、分組就是將若干單位(可以是字符,正則表達式等等)組織在一起,成為一個獨立的單元,該單位可以跟獨立的字符一樣,受量詞的控制,分組使用()表示
    2、分組分為捕獲性分組和非捕獲性分組,簡單的說捕獲性分組就是捕獲分組所匹配的內容暫且存儲在某個地方,以便下次使用,捕獲性分組以(...)表示,有些地方將取得捕獲性分組所匹配結果的過程稱之為"反向引用",非捕獲性分組不捕獲分組所匹配的內容,當然也就得不到匹配的結果,非捕獲性分組以(?:...)表示,在一些只需要分組匹配但是并不需要得到各個分組匹配的結果時,使用非捕獲性分組可以提高匹配速度。
    3、在JavaScript和Java中,捕獲性分組所匹配的內容都是以$1,$2,$3...的格式保存的!
    解決問題:
    1、初步表達式:(\d\d)/(\d\d)/(\d\d\d\d),第一個分組(\d\d)表示日,第二個分組(\d\d)表示月,最后一個分組(\d\d\d\d)表示年
    2、取得匹配后的結果:
       在JavaScript中,分組匹配的結果是存儲在RegExp中的,可以通過RegExp.$1,RegExp.$2...來取得相應的分組匹配結果

    <script type="text/javascript">
        
    <!--
            window.onload 
    = function(){
                
    var now = "25/10/2009";
                
    /(\d\d)\/(\d\d)\/(\d\d\d\d)/.test(now);
                alert(RegExp.$
    1); //25
                alert(RegExp.$2); //10
                alert(RegExp.$3); //2009
            }

        
    //-->
        </script>  

    在Java中,可以通過Matcher的group(int)方法來取得:
    String now = "25/10/2009";
            Matcher matcher 
    = Pattern.compile("(\\d\\d)/(\\d\\d)/(\\d\\d\\d\\d)").matcher(now);
            
    if (matcher.find()) {
                System.out.println(matcher.group(
    1));
                System.out.println(matcher.group(
    2));
                System.out.println(matcher.group(
    3));
            }

    注意:在String的replace()方法中,也可以直接以$1,$2...的格式來取得匹配結果
    3、轉換:
       JavaScript:
        <script type="text/javascript">
        
    <!--
            window.onload 
    = function(){
                
    var now = "25/10/2009";
                
    /(\d\d)\/(\d\d)\/(\d\d\d\d)/.test(now);
                alert(RegExp.$
    3+"-"+RegExp.$2+"-"+RegExp.$1); //2009-10-25
            }

        
    //-->
        </script>   

    Java:
    String now = "25/10/2009";
            Matcher matcher 
    = Pattern.compile("(\\d\\d)/(\\d\\d)/(\\d\\d\\d\\d)").matcher(now);
            
    if (matcher.find()) {
                System.out.println(matcher.group(
    3+ "-" + matcher.group(2+ "-" + matcher.group(1));
            }
     

    4、一個簡單的寫法:

     JavaScript:
        <script type="text/javascript">
        
    <!--
            window.onload 
    = function(){
                
    var now = "25/10/2009";
                alert(now.replace(
    /(\d\d)\/(\d\d)\/(\d\d\d\d)/,"$3-$2-$1")); //2009-10-25
            }

        
    //-->
        </script>  

    Java:
    String now = "25/10/2009";
            System.out.println(now.replaceAll(
    "(\\d\\d)/(\\d\\d)/(\\d\\d\\d\\d)""$3-$2-$1"));

    5、分組結果量詞使用
       上文提到,分組是可以結合量詞使用的,所以上面的程序也可以這樣來寫:
       JavaScript;
    <script type="text/javascript">
        
    <!--
            window.onload 
    = function(){
                
    var now = "25/10/2009";
                alert(now.replace(
    /(\d{2})\/(\d{2})\/(\d{4})/,"$3-$2-$1")); //2009-10-25
            }

        
    //-->
        </script>  

     Java:

          String now 
    = "25/10/2009";
            System.out.println(now.replaceAll(
    "(\\d{2})/(\\d{2})/(\\d{4})""$3-$2-$1"));

      拋磚引玉,希望對您有所幫助!
      內容原創,轉載請注明出處!
    posted on 2009-10-25 13:01 零全零美 閱讀(3978) 評論(2)  編輯  收藏 所屬分類: 正則表達式

    FeedBack:
    # re: [原創]正則表達式學習筆記(5):分組、捕獲性分組和非捕獲性分組
    2009-10-26 11:39 | 凡客誠品
    分享了~謝謝~  回復  更多評論
      
    # re: [原創]正則表達式學習筆記(5):分組、捕獲性分組和非捕獲性分組
    2009-10-26 16:38 | 伊莎貝兒
    分組是可以結合量詞使用的  回復  更多評論
      
    主站蜘蛛池模板: 久久精品国产99国产精品亚洲| 国产成人精品免费直播| 久久精品国产69国产精品亚洲| 污污的视频在线免费观看| 国产男女性潮高清免费网站| 亚洲国产精品无码中文lv| 国产乱子影视频上线免费观看| 噜噜综合亚洲AV中文无码| 亚洲а∨天堂久久精品| 精品久久久久久国产免费了| 亚洲va久久久噜噜噜久久狠狠| 亚洲a一级免费视频| 亚洲一卡2卡4卡5卡6卡在线99 | 手机看片久久国产免费| 亚洲午夜无码久久久久小说| 日本v片免费一区二区三区| 国产精品亚洲精品爽爽| 亚洲无人区一区二区三区| 亚洲视频免费在线观看| 久久久国产亚洲精品| 免费人成视频在线观看视频| 二个人看的www免费视频| 久久久久亚洲精品天堂| 久久久久久国产精品免费免费| 在线观看亚洲免费| 中文字幕不卡亚洲| 国产h肉在线视频免费观看| 亚洲精品av无码喷奶水糖心| 亚洲欧洲中文日韩久久AV乱码| 免费毛片在线看不用播放器 | 黄色网址大全免费| 在线A亚洲老鸭窝天堂| 精品久久8x国产免费观看| 色费女人18女人毛片免费视频| 亚洲成AV人片在WWW色猫咪| 99在线视频免费观看视频 | 国产成人A在线观看视频免费| 国产AV无码专区亚洲AV琪琪| 亚洲AV无码国产精品麻豆天美| 18禁无遮挡无码网站免费| 精品免费久久久久国产一区|