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() 就一目了然了

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


          網站導航:
           
          主站蜘蛛池模板: 阳春市| 泗水县| 城固县| 屏东市| 通州区| 赫章县| 满城县| 嵊州市| 嘉黎县| 蚌埠市| 长沙县| 澄迈县| 台中市| 嵊州市| 沁源县| 兴隆县| 延安市| 富平县| 利川市| 佳木斯市| 沽源县| 区。| 赤水市| 义乌市| 宜川县| 大石桥市| 西乌珠穆沁旗| 株洲市| 客服| 宣城市| 璧山县| 武乡县| 汉寿县| 托克逊县| 合山市| 都江堰市| 温宿县| 嘉善县| 长垣县| 黄梅县| 思南县|