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


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


          找了半天也沒有找到創(chuàng)建正則表達式的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
          創(chuàng)建正則表達式還用 DSL 嗎,手寫不就行了嗎?

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

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

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

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 洪湖市| 昌黎县| 荣成市| 通许县| 永州市| 安顺市| 海盐县| 文昌市| 怀宁县| 普宁市| 饶平县| 确山县| 沂源县| 桐乡市| 涟源市| 台江县| 耒阳市| 高淳县| 无极县| 贵南县| 高密市| 保定市| 格尔木市| 灵川县| 太仆寺旗| 曲阳县| 临湘市| 台北市| 麻江县| 南宫市| 庄浪县| 自治县| 安国市| 上虞市| 五指山市| 凉山| 岱山县| 黄山市| 闸北区| 桦南县| 莒南县|