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


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


          找了半天也沒有找到創(chuàng)建正則表達(dá)式的DSL, 如果你知道請(qǐng)告訴我

          只好先自己寫來(lái)應(yīng)急了: http://roll-stone.googlecode.com/svn/trunk/RegexBuilder/

          用起來(lái)類似這樣: 

          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

           

          還有一個(gè) RegexUtil 來(lái)直接提供常用的正則表達(dá)式, 如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

           

          很多功能都還沒提供,希望有人一起來(lái)做


          評(píng)論

          # re: RegexBuilder: A DSL for creating regular expression  回復(fù)  更多評(píng)論   

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

          # re: RegexBuilder: A DSL for creating regular expression  回復(fù)  更多評(píng)論   

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 海口市| 水城县| 章丘市| 巴林左旗| 延边| 霞浦县| 潞西市| 汤原县| 德阳市| 天水市| 威宁| 新乐市| 尚义县| 铁力市| 行唐县| 历史| 荆州市| 浦城县| 清新县| 大洼县| 襄樊市| 酒泉市| 祁连县| 阜阳市| 云阳县| 肇东市| 崇州市| 车致| 英吉沙县| 筠连县| 淮南市| 临澧县| 仁怀市| 阿拉尔市| 临泉县| 延庆县| 呼和浩特市| 银川市| 北票市| 曲阜市| 长岭县|