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/


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


          網站導航:
           
          主站蜘蛛池模板: 木里| 阳新县| 广西| 张家口市| 京山县| 虹口区| 浦北县| 廊坊市| 烟台市| 凤凰县| 龙山县| 嘉鱼县| 贺兰县| 贵德县| 贡嘎县| 望谟县| 鄯善县| 金沙县| 砚山县| 白玉县| 枞阳县| 余姚市| 平陆县| 星子县| 乌兰察布市| 图们市| 平邑县| 北票市| 怀集县| 临泉县| 县级市| 望都县| 镇平县| 和政县| 大庆市| 逊克县| 铜鼓县| 河池市| 连州市| 双桥区| 孝感市|