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

          class IP

              include RegexpBuilder

              def less_than_255

                  _0_to_100 = repeat(digit(), 1, 2)

                  _100_to_200 = "1" + _0_to_100

                  _200_to_250 = "2" + either("0-4") + either("0-9")

                  _250_to_255 = "25" + either("0-4")

                 one_of(_0_to_100, _100_to_200, _200_to_250, _250_to_255)

              end

              def initialize

                  @ip_pattern = repeat(group(group(less_than_255()) + literal(".")), 3) + group(less_than_255())

              end

              attr_reader :ip_pattern

          end


          以上是應用 RegexBuilder 書寫正則表達式例如 IP 地址的一個例子.

          RegexBuilder 的目的是試圖增強正則表達式的可讀性和可維護性

          RegexBuilder 并不是用來取代 Regexp 的, 而是輔助編寫 Regexp 構造函數需要的第一個參數.

          RegexBuilder 包含了正則表達式符號(Anchors/Character Classes/Repetition/Alternation/Grouping)到 API 的一一對應, 如 one_of => |, either => [], at_least_one => + 等.

          RegexBuilder 還包含了可以直接使用的一組常見的正則表達式, 如 IP 地址, Email 地址等.

           

          RegexBuilder 使用了Java風格的API而不是Ruby風格的API, 如 repeat(3, digit()) 而不是 digit(:repeat => 3)

          RegexBuilder 還沒實現Substitutions, 如 \0, \1, \& 等.

           

          安裝下載

          gem install regexbuilder

          http://roll-stone.googlecode.com/svn/trunk/RegexBuilder/


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


          網站導航:
           
          主站蜘蛛池模板: 剑河县| 灌云县| 东阳市| 江北区| 永寿县| 南召县| 万荣县| 六枝特区| 沅江市| 同心县| 任丘市| 怀安县| 富裕县| 肃宁县| 车致| 无极县| 正安县| 花莲市| 金塔县| 玉树县| 武功县| 济宁市| 台南县| 河池市| 昆山市| 越西县| 邛崃市| 溧水县| 东源县| 汤原县| 恩平市| 葵青区| 全州县| 白朗县| 肥乡县| 三河市| 莫力| 石泉县| 建宁县| 孙吴县| 穆棱市|