<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 | 伊莎貝兒
    分組是可以結合量詞使用的  回復  更多評論
      
    主站蜘蛛池模板: 免费在线一级毛片| 亚洲va国产va天堂va久久| 亚洲日本va在线观看| 24小时日本电影免费看| 亚洲人成综合在线播放 | 国产伦精品一区二区三区免费迷| 风间由美在线亚洲一区| 亚洲日韩VA无码中文字幕 | 亚洲人午夜射精精品日韩| a级成人毛片免费视频高清| 亚洲精品高清久久| 美女视频黄a视频全免费| 亚洲精品乱码久久久久蜜桃| 亚洲AV无码专区日韩| 国产性生大片免费观看性| 亚洲国产香蕉碰碰人人| 免费做爰猛烈吃奶摸视频在线观看| 亚洲精品国产综合久久久久紧| 免费永久在线观看黄网站| caoporm碰最新免费公开视频| 国产亚洲av片在线观看18女人 | 亚洲国产成人影院播放| 成人影片一区免费观看| 亚洲三级中文字幕| 免费在线观看一级毛片| 国产午夜无码片免费| xxx毛茸茸的亚洲| 亚洲综合精品网站| 2020因为爱你带字幕免费观看全集 | 亚洲综合久久综合激情久久| 在线免费观看一级片| 黄色网页在线免费观看| 亚洲依依成人精品| 亚洲国产一区二区视频网站| 97久久免费视频| 无忧传媒视频免费观看入口| 久久久久久久亚洲Av无码| 免费观看亚洲人成网站| 无码A级毛片免费视频内谢| 久久亚洲精品11p| 亚洲AV乱码一区二区三区林ゆな |