posts - 56, comments - 77, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理


          /* 最新版本請參見 http://www.aygfsteel.com/chelsea/archive/2007/12/16/168118.html */


          找了半天也沒有找到創建正則表達式的DSL, 如果你知道請告訴我

          只好先自己寫來應急了: http://roll-stone.googlecode.com/svn/trunk/RegexBuilder/

          用起來類似這樣: 

          require 'regex_builder'  

          class RegexBuilderTest < Test::Unit::TestCase

            def setup

              @rb = RegexBuilder. new

            end  

            def test_ruby_start_with_r

              pattern = @rb .start_with( "r" ).to_s

              assert "ruby" .match(pattern)

            end  

            def test_ruby_start_with_r_and_end_with_y

              pattern = @rb .start_with( "r" ).any().end_with( "y" ).to_s

              assert "ruby" .match(pattern)

            end  

          end

           

          還有一個 RegexUtil 來直接提供常用的正則表達式, 如email地址,ip地址等,想到啥都可以往里加

          require 'regex_util'  

          class RegexUtilTest < Test::Unit::TestCase 

            def test_192_168_0_3_is_a_valid_ip_address

              assert "192.168.0.3" .match(RegexUtil::IP_Pattern)

            end  

            def test_500_312_0_3_is_not_a_valid_ip_address

              assert_nil( "500.312.0.3" .match(RegexUtil::IP_Pattern) )

            end  

            def test_chelsea_at_gmail_dot_com_is_a_valid_email_address

              assert "chelsea@gmail.com" .match(RegexUtil::Email_Pattern)

            end  

            def test_www_dot_google_dot_com_is_not_a_valid_email_address

              assert_nil( "www.google.com" .match(RegexUtil::Email_Pattern) )

            end  

          end

           

          很多功能都還沒提供,希望有人一起來做


          評論

          # re: RegexBuilder: A DSL for creating regular expression  回復  更多評論   

          2006-11-27 13:46 by HH
          創建正則表達式還用 DSL 嗎,手寫不就行了嗎?

          # re: RegexBuilder: A DSL for creating regular expression  回復  更多評論   

          2006-11-27 13:52 by 切爾斯基
          理由很多啊,減少出錯,易讀易懂,利于交流:

          大S和小S哪個是非空格字符哪個是空格字符?記不住啊, 看起來也不直觀, 用 @rb.non_space() 和 @rb.space() 就一目了然了

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


          網站導航:
           
          主站蜘蛛池模板: 布尔津县| 兰西县| 新津县| 吐鲁番市| 达日县| 阜新| 三河市| 沿河| 郴州市| 安塞县| 峡江县| 丰顺县| 迭部县| 怀安县| 广水市| 当雄县| 黔东| 苗栗市| 佛坪县| 高雄市| 西安市| 陇川县| 崇阳县| 西峡县| 当涂县| 芦溪县| 奉化市| 苏州市| 台北县| 遂宁市| 克山县| 密云县| 弥勒县| 建宁县| 勐海县| 娄烦县| 赤壁市| 静宁县| 安丘市| 五指山市| 塔河县|