- 浏览: 119422 次
- 来自: ...
文章分类
最新评论
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
RegexBuilder tries to improve the readability and maintainability of regular expression.
RegexBuilder does not intend to replace the Regexp class, while it just helps to create the first parameter of the ctor of Regexp.
RegexBuilder maps the symbols of regular expression (Anchors/Character Classes/Repetition/Alternation/Grouping) to API, like one_of => |, either => [], at_least_one => + ,etc.
RegexBuilder supports a group of regular expression which are used frequently, such as IP and Email address.
RegexBuilder uses Java style API rather than Ruby Style API, like repeat(3, digit()) , but not digit(:repeat => 3)
RegexBuilder does not support Substitutions for now, like /0, /1, /& etc.
Download and Install
gem install regexbuilder
发表评论
-
The Object Primer
2004-12-11 11:21 5951,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 761错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 596前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 624前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 47314.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 649同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 614有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 635设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 678关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 714交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 614整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 807一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 755事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 853经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 744BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6891, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 730读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 762十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 713Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 677Event BusinessWare是一个事件驱动的系统 ...
相关推荐
English |抽象的为了为使用imgcook在多个平台上生成代码的用户提供更好的体验,我们提供了将imgcook模式转码为您喜欢的任何编程语言的Open DSL System(开放域特定语言系统)。 开发人员可以使用imgcook提供的默认...
Maven坐标:cn.tenmg:dsl:1.2.7; 标签:tenmg、dsl、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释...
《深入理解Infamous:ClojureScript DSL在Famous.js中的应用》 在现代Web开发中,JavaScript作为客户端脚本语言的地位不可动摇。随着技术的不断发展,JavaScript生态系统也日益繁荣,诞生了许多优秀的框架和库,其中...
文件夹src/test/kotlin/kotlin_dsl包含以下文件: 介绍DSL使用情况的Demo.kt dsl.kt定义DSL的上下文注解.kt,它提供了上下文控制工具文件夹src/main/kotlin/kotlin_dsl包含以下文件: model.kt,其中包含此示例的...
**KDBC:KotlinSQL DSL 全面解析** 在当今的软件开发中,数据库操作是不可或缺的一部分。KDBC,即KotlinSQL DSL,是专为Kotlin编程语言设计的一个库,它提供了一种声明式的、类型安全的方式来构建SQL查询。KDBC通过...
`jenkins-dsl-playground` 是一个基于 Jenkins Job DSL 的实验项目,它提供了一个平台用于测试和演示 Jenkins Domain Specific Language (DSL) 的功能。Jenkins DSL 是一种使用 Groovy 语言来定义 Jenkins 构建流程...
DSL(Domain-Specific Language,领域特定语言)是一种专门为某一特定领域设计的语言,它通常比通用编程语言更为简洁,更贴近该领域的思维模式。在Java世界中,DSLs被广泛用于简化复杂的任务,如配置、数据库操作、...
Kotlin DSL,全称为Domain-Specific Language(领域特定语言),是Kotlin编程语言的一个特性,允许开发者用更简洁、易读的方式来编写构建脚本,尤其是针对Gradle构建系统。Kotlin DSL是Gradle的一种替代性脚本语言,...
Maven坐标:cn.tenmg:dsl:1.2.7; 标签:tenmg、dsl、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...
上下文映射器DSL(CML) ContextMapper是一个开放源代码工具,提供基于域驱动设计(DDD)模式的特定于域的语言,用于上下文映射和服务分解。 使用ContextMapper DSL语言,您可以表达DDD上下文映射。 使用该语言对...
DSL(领域特定语言)是一种为特定领域设计的编程或配置语言,它通常比通用编程语言更简洁、更直观。在本场景中,`dsl-symfony` 是一个针对 DSL 平台的 Symfony 包,目的是简化与平台交互,特别是处理表单相关的任务...
telegraff:Kotlin DSL通讯工具Telegramботов
haskell-ethereum-assembly:Haskell DSL上的EVM(以太坊虚拟机)组装
选项 DSL 注意:仍然需要一些工作:-) OptionsDSL 是一个用于定义命令行选项的库(尽管它可以用于其他参数处理)。 选项,包括全局标志/开关和验证码也可用于子命令; 即 ./scipt.rb [选项] DSL 可以从一个目录中...
PlasterManifestDSL则是专门为PowerShell设计的一种领域特定语言(DSL),它允许开发者轻松地定义石膏模板,从而更方便地创建和定制PowerShell项目结构。 【描述】:PlasterManifestDSL是一个工具,通过PowerShell...
以 DSL 方式处理 zip 文件的库 安装 将此行添加到应用程序的 Gemfile 中: gem 'zip_dsl' 然后执行: $ bundle 或者自己安装: $ gem install zip_dsl 用法 您可以创建新存档: require 'zip_dsl' zip_file...
Blockenspiel是一个帮助程序库,旨在简化DSL块的实现。 它被设计为全面而强大的功能,支持大多数常见的使用模式,并且在存在嵌套块和多线程的情况下可以正常工作。 摘要 Blockenspiel是一个帮助程序库,提供了用于...
在软件开发领域,DSL(Domain-Specific Language,领域特定语言)是一种为特定应用领域设计的编程语言,它简化了在该领域内的复杂操作。DSL 可以分为外部DSL和内部DSL。外部DSL像XML,独立于主编程语言,而内部DSL则...