新的起點(diǎn) 新的開始

          快樂生活 !

          深入淺出Java正則表達(dá)(1)

              正則表達(dá)式作為Perl最出眾的賣點(diǎn),已經(jīng)在Linux平臺上廣泛的應(yīng)用,比如命令grep sed等。JDK1.4 在NIO中重要提供了正則表達(dá)式引擎的實(shí)現(xiàn)。本系列將通過解決問題的方式來深入學(xué)習(xí)Java正則表達(dá)式。
          最終我們目標(biāo)是如何通過正則表達(dá)式獲取Java代碼中方法的個(gè)數(shù)與屬性的個(gè)數(shù)(當(dāng)然通過反射是小Case)
          (1)如何統(tǒng)計(jì)一行中重復(fù)單詞
           如果沒有正則表達(dá)式,我們只能解析逐個(gè)判斷了。正則呢?
          import java.util.regex.Matcher;
          import java.util.regex.Pattern;
          import java.util.regex.PatternSyntaxException;

          /**
           *
           * 
          @author vma
           
          */
          public class MatchDuplicateWords {
           
          public static void main(String args[]){
                hasDuplicate(
          "Faster pussycat  haha haha  dd dd haha haha zz zz");
             }

             
          public static boolean hasDuplicate(String phrase){
                
          boolean retval=false;

                String duplicatePattern 
          ="\\b(\\w+) \\1\\b";
                Pattern p 
          = null;
                
          try{
                  p 
          = Pattern.compile(duplicatePattern);
                }
                
          catch (PatternSyntaxException pex){
                   pex.printStackTrace();
                   System.exit(
          0);
                }
                
          //count the number of matches.
                int matches = 0;
                
          //get the matcher
                Matcher m = p.matcher(phrase);
                String val
          =null;

                
          //find all matching Strings
                while (m.find()){
                   retval 
          = true;
                  val 
          = ":" + m.group() +":";
                  System.out.println(val);
                  matches
          ++;
                }

                
          //prepare a message indicating success or failure
                String msg = "   NO MATCH: pattern:" + phrase
                       
          + "\r\n             regex: "
                       
          + duplicatePattern;

                
          if (retval){
                msg 
          = " MATCH     : pattern:" + phrase
                    
          + "\r\n         regex: "
                    
          + duplicatePattern;
                }

                System.out.println(msg 
          +"\r\n");
                
          return retval;
             }
          }


          posted on 2008-08-24 00:13 advincenting 閱讀(481) 評論(0)  編輯  收藏


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


          網(wǎng)站導(dǎo)航:
           

          公告

          Locations of visitors to this pageBlogJava
        1. 首頁
        2. 新隨筆
        3. 聯(lián)系
        4. 聚合
        5. 管理
        6. <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統(tǒng)計(jì)

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語學(xué)習(xí)網(wǎng)站

          JAVA站點(diǎn)

          優(yōu)秀個(gè)人博客鏈接

          官網(wǎng)學(xué)習(xí)站點(diǎn)

          生活工作站點(diǎn)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 婺源县| 杂多县| 郯城县| 江北区| 壶关县| 万州区| 万山特区| 景东| 仪征市| 泰来县| 无为县| 涡阳县| 旌德县| 漳平市| 宁津县| 九江县| 岳普湖县| 永德县| 普宁市| 长泰县| 内丘县| 拉萨市| 杭锦后旗| 唐河县| 栾城县| 东阳市| 温宿县| 土默特左旗| 中宁县| 沽源县| 富锦市| 潍坊市| 大足县| 屏山县| 中宁县| 台北市| 鄂温| 噶尔县| 洪江市| 吉首市| 恩施市|