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

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


          網站導航:
           
          主站蜘蛛池模板: 济宁市| 浙江省| 香港 | 大化| 丹江口市| 光山县| 新民市| 吴忠市| 南昌市| 上林县| 松阳县| 永康市| 定陶县| 天峨县| 庆城县| 毕节市| 正定县| 军事| 正宁县| 吉木萨尔县| 鸡泽县| 大洼县| 延边| 寿阳县| 汾阳市| 昭苏县| 宾川县| 巢湖市| 浪卡子县| 荥经县| 鄂托克旗| 中江县| 闸北区| 岳阳市| 乌兰浩特市| 加查县| 固原市| 香河县| 通州市| 三门县| 英山县|