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/


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


          網站導航:
           
          主站蜘蛛池模板: 会泽县| 德清县| 华安县| 鄄城县| 日土县| 衡阳县| 松江区| 岱山县| 布拖县| 绥芬河市| 安阳市| 西宁市| 湾仔区| 五原县| 虎林市| 阜阳市| 商都县| 西乌珠穆沁旗| 西乌| 新疆| 沾益县| 雅安市| 定远县| 肇东市| 宝兴县| 阜南县| 都兰县| 嘉禾县| 兴国县| 漾濞| 威海市| 盐亭县| 东光县| 蓬莱市| 安宁市| 中卫市| 乌鲁木齐市| 宁陵县| 怀集县| 雷波县| 宜都市|