`
chelsea
  • 浏览: 119422 次
  • 来自: ...
社区版块
存档分类
最新评论

RegexBuilder: A DSL for creating regular expression, Request For Comment

    博客分类:
 
阅读更多

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/

 

It is an example of using RegexBuilder to create regular expression like IP address.

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

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

分享到:
评论

相关推荐

    dsl-template:imgcook dsl模板

    English |抽象的为了为使用imgcook在多个平台上生成代码的用户提供更好的体验,我们提供了将imgcook模式转码为您喜欢的任何编程语言的Open DSL System(开放域特定语言系统)。 开发人员可以使用imgcook提供的默认...

    dsl-1.2.7-API文档-中文版.zip

    Maven坐标:cn.tenmg:dsl:1.2.7; 标签:tenmg、dsl、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释...

    infamous:ClojureScript DSL(用于Famous.js)

    《深入理解Infamous:ClojureScript DSL在Famous.js中的应用》 在现代Web开发中,JavaScript作为客户端脚本语言的地位不可动摇。随着技术的不断发展,JavaScript生态系统也日益繁荣,诞生了许多优秀的框架和库,其中...

    kotlin-dsl-example:Kotlin DSL构建的丰富示例

    文件夹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 全面解析** 在当今的软件开发中,数据库操作是不可或缺的一部分。KDBC,即KotlinSQL DSL,是专为Kotlin编程语言设计的一个库,它提供了一种声明式的、类型安全的方式来构建SQL查询。KDBC通过...

    jenkins-dsl-playground:Jenkins DSL POC的游乐场

    `jenkins-dsl-playground` 是一个基于 Jenkins Job DSL 的实验项目,它提供了一个平台用于测试和演示 Jenkins Domain Specific Language (DSL) 的功能。Jenkins DSL 是一种使用 Groovy 语言来定义 Jenkins 构建流程...

    demoDsl:演示 DSL 谈话

    DSL(Domain-Specific Language,领域特定语言)是一种专门为某一特定领域设计的语言,它通常比通用编程语言更为简洁,更贴近该领域的思维模式。在Java世界中,DSLs被广泛用于简化复杂的任务,如配置、数据库操作、...

    kotlin-dsl-kr:kotlin dsl번역입니다

    Kotlin DSL,全称为Domain-Specific Language(领域特定语言),是Kotlin编程语言的一个特性,允许开发者用更简洁、易读的方式来编写构建脚本,尤其是针对Gradle构建系统。Kotlin DSL是Gradle的一种替代性脚本语言,...

    dsl-1.2.7-API文档-中英对照版.zip

    Maven坐标:cn.tenmg:dsl:1.2.7; 标签:tenmg、dsl、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    context-mapper-dsl:ContextMapper DSL:用于上下文映射和服务分解的特定于域的语言

    上下文映射器DSL(CML) ContextMapper是一个开放源代码工具,提供基于域驱动设计(DDD)模式的特定于域的语言,用于上下文映射和服务分解。 使用ContextMapper DSL语言,您可以表达DDD上下文映射。 使用该语言对...

    dsl-symfony:用于 DSL 平台客户端的 Symfony 包

    DSL(领域特定语言)是一种为特定领域设计的编程或配置语言,它通常比通用编程语言更简洁、更直观。在本场景中,`dsl-symfony` 是一个针对 DSL 平台的 Symfony 包,目的是简化与平台交互,特别是处理表单相关的任务...

    telegraff:Kotlin DSL通讯工具Telegramботов

    telegraff:Kotlin DSL通讯工具Telegramботов

    haskell-ethereum-assembly:Haskell DSL上的EVM(以太坊虚拟机)组装

    haskell-ethereum-assembly:Haskell DSL上的EVM(以太坊虚拟机)组装

    options-dsl:选项 DSL - 用于定义命令行选项的小型 ruby​​ dsl

    选项 DSL 注意:仍然需要一些工作:-) OptionsDSL 是一个用于定义命令行选项的库(尽管它可以用于其他参数处理)。 选项,包括全局标志/开关和验证码也可用于子命令; 即 ./scipt.rb [选项] DSL 可以从一个目录中...

    PlasterManifestDSL:PowerShell DSL创建石膏清单

    PlasterManifestDSL则是专门为PowerShell设计的一种领域特定语言(DSL),它允许开发者轻松地定义石膏模板,从而更方便地创建和定制PowerShell项目结构。 【描述】:PlasterManifestDSL是一个工具,通过PowerShell...

    zip_dsl:以 DSL 方式处理 zip 文件的库

    以 DSL 方式处理 zip 文件的库 安装 将此行添加到应用程序的 Gemfile 中: gem 'zip_dsl' 然后执行: $ bundle 或者自己安装: $ gem install zip_dsl 用法 您可以创建新存档: require 'zip_dsl' zip_file...

    blockenspiel:Ruby DSL块的全面实现

    Blockenspiel是一个帮助程序库,旨在简化DSL块的实现。 它被设计为全面而强大的功能,支持大多数常见的使用模式,并且在存在嵌套块和多线程的情况下可以正常工作。 摘要 Blockenspiel是一个帮助程序库,提供了用于...

    InternalJavaDSLBuilder:用于 DSL 的 Java 内部 DSL-Builder,重点是实例化模型

    在软件开发领域,DSL(Domain-Specific Language,领域特定语言)是一种为特定应用领域设计的编程语言,它简化了在该领域内的复杂操作。DSL 可以分为外部DSL和内部DSL。外部DSL像XML,独立于主编程语言,而内部DSL则...

Global site tag (gtag.js) - Google Analytics