雪湖小札@blogjava

          心情與技術文檔同行 http://hi.baidu.com/jingleq

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            24 Posts :: 2 Stories :: 4 Comments :: 0 Trackbacks
          有這么一個字符串:a1=1,a2=X2{b1=1,b2=X3{c1=1,c2=2}},a3=X4{b1=1}
          想寫一個正則表達式,讓下面code的執行結果是:
          result(以逗號為token來分割字符串,逗號在"{"和"}"里面的忽略其做為token):
          a1=1  
          a2
          =X2{b1=1,b2=X3{c1=1,c2=2}}   
          a3
          =X4{b1=1}
          以上問題來自 http://www.javaeye.com/post/265973

          使用antlr3規則處理
          grammar Spl;
          options {
            output
          =AST;
            ASTLabelType=CommonTree;
          }
          stat     :    spl
          [0];
          spl 
          [int step]     returns [String value]:    (expr[step]  
              {    
                  if ($value!
          =null)
                      $value +
          = $expr.value;
                  else
                      $value 
          = $expr.value;
              }) +
              
          ;
          expr 
          [int step]    returns [String value]:    a=ID '=' b=ID (| p=param[step]) c=','? 
              {
                  String str 
          = $a.text + "=" + $b.text;
                  if (p !=null)
                      str +
          = $param.value;
                  if ($step == 0) {
                      System.out.println(str)
          ;
                  } else {
                      $value 
          = str;
                      if (c!=null)
                          $value +
          =",";
                  } 
              }
              
          ;
          param [int step] returns [String value]:    '{' spl[1] '}'
              {
                  $value 
          = "{" + $spl.value + "}";
              }
              
          ;
          ID    :    ('a'..'z' | 'A'..'Z' | '
          0' .. '9')('a'..'z' | 'A'..'Z' | '0' .. '9') *;
          EQPARAM    :    '=';
          WS    :    (' '|'\t'|'\n'|'\r') + {skip();};
          posted on 2007-06-25 13:26 csnowfox 閱讀(857) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 靖江市| 新和县| 静乐县| 正宁县| 荥阳市| 旺苍县| 凌海市| 博爱县| 栾川县| 寿宁县| 阜城县| 大名县| 梓潼县| 武义县| 辽中县| 平南县| 东乡县| 德昌县| 英德市| 丰镇市| 巩留县| 永安市| 乐都县| 涿州市| 庄河市| 吉林省| 邓州市| 元阳县| 贵南县| 横山县| 彭阳县| 大关县| 永胜县| 湘阴县| 罗定市| 金溪县| 长宁区| 曲水县| 郯城县| 阿荣旗| 乡城县|