`

Ruby 1.9 regex (named capture group)

    博客分类:
  • Ruby
阅读更多
Ruby 1.9正则增加了支持命名组,这样使得正则具有更好的可读行,
你可以定义每一部分的正则,然后命名成组,并且在后面加上
{0},表明不获取匹配内容,然后在使用\g引用对用的组,组成
大的正则,并且加上/x修饰。这样比较复杂的正则,会有更好的可读性。
users = %w{
   alice:10.23.52.112:true
   bob:192.168.10.34:false
 }
 
 user_regexp = %r{
   (?<username> [a-z]+ ){0}
   (?<ip_number> [0-9]{1,3} ){0}
   (?<ip_address> (\g<ip_number>\.){3}\g<ip_number> ){0}
   (?<admin> true | false ){0}
   \g<username>:\g<ip_address>:\g<admin>
 }x

users.each do |u|
	r = user_regexp.match(u)
	puts "User #{r[:username]} is from #{r[:ip_address]}"
end

使用match和hash的方式,以组的命名作为key就可以访问匹配内容了。
分享到:
评论

相关推荐

    各种 Cookbooks, bash, mysql, ruby, regex, plsql, c#

    [Ruby袖珍参考手册].(Ruby.Pocket.Reference).Michael.Fitzgerald.文字版.pdf [SQL袖珍参考手册(第3版)].(SQL.Pocket.Guide).Jonathan.Gennick.文字版.pdf [vi和Vim编辑器袖珍参考手册(第2版)].(vi.and.Vim.Editors....

    正则基础之——捕获组(capture group).rar

    本文件“正则基础之——捕获组(capture group)”将深入讲解正则表达式中的一个重要概念——捕获组,这是理解和运用正则表达式不可或缺的一部分。 捕获组是正则表达式中的一种机制,它允许我们将一个模式分隔成多...

    ruby_regex:Ruby正则表达式库

    RubyRegex是Ruby中很好的正则表达式集合 常用表达 RubyRegex::Url RubyRegex::Domain RubyRegex::Email RubyRegex::Username RubyRegex::USSocialSecurity RubyRegex::GeneralPostalCode RubyRegex::ZIPCode ...

    regex.h regex.cpp

    在本案例中,"regex.h" 和 "regex.cpp" 是两个关键文件,它们分别代表了C语言中处理正则表达式的头文件和源文件。 `regex.h` 头文件是C语言中使用正则表达式的关键接口,它包含了所有与正则表达式相关的函数声明和...

    正则表达式测试工具regex101

    在网络安全领域,CTF(Capture The Flag)竞赛中,正则表达式是解决许多挑战的关键工具,如数据解析、密码验证、日志分析等。`regex101`可以帮助参赛者快速构建和测试正则表达式,提升解题效率。 在实际应用中,...

    linux下的C语言POSIX正则表达式头文件和源文件: regex.h regex.cpp

    在本主题中,我们将探讨`regex.h`头文件和`regex.cpp`源文件,以及如何在Visual Studio 2010或2012环境下编译它们。 首先,`regex.h`是包含POSIX正则表达式函数声明的头文件。在Linux中,这个头文件定义了几个关键...

    js_regex:将Ruby正则表达式转换为JavaScript正则表达式

    ruby_hex_regex = /0x \h +/i js_regex = JsRegex . new ( ruby_hex_regex ) js_regex . warnings # =&gt; [] js_regex . source # =&gt; '0x[0-9A-Fa-f]+' js_regex . options # =&gt; 'i' 一个options:参数使您可以强制...

    Python库 | regex-0.1.20110313.tar.gz

    P)`),`regex`还支持Python的`named_group`语法,即`(?P=name)`,可以更方便地引用已定义的捕获组。 3. **条件表达式**:允许在正则表达式中嵌入条件语句,根据前面匹配的部分决定后续的匹配行为。 4. **递归模式...

    Cpp regex usge demo

    在C++编程语言中,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于模式匹配、查找、替换和提取字符串中的特定模式。STL(Standard Template Library)库是C++的一个重要组成部分,它...

    Regex Helper

    Regex Helper 是一个专为.NET开发者设计的工具,用于测试和验证符合.NET规范的正则表达式。这个工具的强大之处在于它能够帮助程序员快速检查和调试他们的正则表达式,确保它们能够按照预期工作。下面我们将深入探讨...

    mingw下64位的regex.dll

    64位的regex.dll 在mingw环境下编译成的,大家可以使用

    apach-nutch-1.9-bin.tar.gz

    同时,可能还需要配置`conf/regex-urlfilter.txt`和`conf/fetcher.properties`等文件以适应特定需求。 5. **运行Nutch**:启动Nutch涉及到多个步骤,包括生成URL列表、执行抓取、索引和搜索等。命令行工具如`bin/...

    Regex Expression(正则表达式)

    Regular expression 具有可以表达出难以描述、複杂、但是却有特殊规则的字串的功能,所以许多的 UNIX 工具程式都有支援 Regular expression 的功能。例如 ex 、 vi 、 sed 、 awk 、 grep ...这里有文件Regex.h,Regex.c

    C++正则表达式-regex类(不依赖其他库)

    在这个特定的案例中,我们关注的是`regex`类,它是C++ `&lt;regex&gt;`库的一部分,用于实现正则表达式操作。这个压缩包文件包含了一个名为`regex.h`的头文件,以及`release`和`debug`两个目录,这通常意味着它提供了编译...

    TestRegex_regex_C#_

    在IT行业中,正则表达式(Regex)是一种强大的文本处理工具,用于匹配、查找、替换或提取特定模式的字符串。C# 是一种广泛使用的编程语言,它提供了丰富的支持来处理正则表达式。"TestRegex_regex_C#" 这个标题表明...

    regex++ document (boost)

    《regex++文档(Boost库)详解》 在编程领域,正则表达式(Regex)是一种强大的文本处理工具,用于模式匹配、查找、替换等操作。Boost库中的`regex++`是C++中实现正则表达式的高效库,它提供了丰富的功能和高度的灵活...

    GNU regex windows编译

    在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于匹配、查找、替换或提取特定模式的字符串。GNU regex库是GNU项目中的一个组件,提供了跨平台的正则表达式处理功能。这个...

    C++Regex正则表达式

    C++中的正则表达式(Regex)是一种强大的文本处理工具,它允许程序员通过模式匹配来搜索、替换或分割字符串。正则表达式在C++中是通过标准库 `&lt;regex&gt;` 提供的,这个库提供了丰富的功能,使得处理复杂的文本模式变得...

    RegEX Tester下载及使用

    正则表达式(Regular Expression,简称RegEX)是一种强大的文本处理工具,用于匹配、查找、替换等操作。在编程和数据分析领域,正则表达式扮演着至关重要的角色。"RegEX Tester"是一款实用的工具,它能帮助用户方便...

Global site tag (gtag.js) - Google Analytics