说起Ruby当然要提起他的正则表达式机制,正则表达式作为一个强大的匹配语言已经越来越多的使用到不同的领域当中,从字符串验证,匹配,到网页抽取等。虽然有些人诟病与正则表达式的匹配效率,但是考虑到正则的强大匹配能力也就无所谓了。
这里就不详细介绍正则表达式的语法了,该语法在百度,google之类的搜索中一搜一大堆。
说起ruby的正则不就不能不说起ruby的=~和match两种匹配方式,我们还是用实例来说明一下这两种匹配方式的区别吧。
先来说一说=~的用法吧
message = "afhadhffkdf414j"
regex=/[a-z](\d{3})[a-z]/
puts regex=~message
在ruby当中是用//来表示正则匹配语句的。大家可以运行一下,上面的语句是匹配三个数字两边都是小写字母的一个字符串。我们运行上面代码,将会出现结果10.你一定很奇怪,为什么会出现10这个结果,这就是=~的魅力,他是将匹配结果的首次出现位置打印出来。
那下面我们来看看match吧
message = "afhadhffkdf414j"
regex=/[a-z](\d{3})[a-z]/
puts regex.match(message)
我们来看看输出结果吧:f414j。该字符串表示的正则语句匹配的所有符合规则的结果集。不知道大家注意到没,我们在正则里面用到了括号,我们希望抽取出三个数字就可以了。当然这也很简单,我们只需要在上面的代码当中稍作修改即可
message = "afhadhffkdf414j"
regex=/[a-z](\d{3})[a-z]/
regex.match(message)
puts $1
结果自然是414.为什么要使用$1而不是$0呢,我们看看$0的结果吧C:/Users/Administrator/Documents/NetBeansProjects/RubyApplication1/lib/regex.rb它是输出的该对象信息。
下面又出现了一个新的情况,假设一个字符串当中有很多符合规则的信息怎么办呢。上面的语句只能匹配出最先找到的结果,而我们需要把所有的结果都打印出来怎么办呢?刚开始我受java的影响,认为match的结果会是一个集合,所以怎么考虑也没有整出来。后来发现有一个scan方法。代码如下图所示
message = "afhadhffkdf414j9tr3j43i3433094jwoert223jwew123dfdf"
regex=/[a-z](\d{3})[a-z]/
message.scan(regex).each { |m| puts "The result is #{m[0]}" }
很简单,结果就是
The result is 414
The result is 223
The result is 123
怎么样,很方便吧。很简单的就把所有的匹配结果都抽取出来了。好了,下班了。回家吃饭了
分享到:
相关推荐
接下来,我们将深入探讨Ruby正则表达式的主要知识点。 ### 一、字符规则 1. **基础字符匹配**:`/a/`会匹配字符`a`。 2. **字符集**:`/[\d]/`匹配任意数字;`/[\w]/`匹配任何字母、数字或下划线;`/[\s]/`匹配...
### Ruby正则表达式规则详解 #### 一、引言 在Ruby编程语言中,正则表达式(Regular Expression)是一种强大的文本处理工具,被广泛应用于字符串搜索与替换、数据验证以及模式匹配等场景。本篇文章将深入探讨Ruby...
js_regex,将Ruby正则表达式转换为JavaScript正则表达式。.zip
The Book Of Ruby Ruby 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式
在编写puppet的pp文件中,会用到很多ruby的正则表达式,常用的正则如下: 正则表达式: [codesyntax lang=”ruby”] {}: 重复次数(如 {4}表示前面的会重复出现恰好4次) {m,n}: 前面元素最少出现m次,最多出现n次 []...
我们再看一个更有趣的程序.这次我们来测试一个字符串是否和一个由简明模式(concise pattern)编码产生的描述相匹配. 在这些模式(pattern)里,一些字符或字符组合都有独特的意义,包括: 代码如下:[] 范围描述符 ...
在Ruby编程语言中,正则表达式(Regular Expression)是一种强大的工具,用于处理字符串和文本数据,特别是查找、替换和提取特定模式。标题提到的"一个漂亮的正则表达式用于查找和提取这些文件中的相对URL"是针对...
用于从字符串列表创建紧凑的,非回溯的正则表达式。 安装 将此行添加到您的应用程序的Gemfile中: gem 'list_matcher' 然后执行: $ bundle 或将其自己安装为: $ gem install list_matcher 概要 require '...
适用人群:适用于希望提升自己使用Ruby进行文本解析和处理能力的研发人员以及熟悉基础编程但想进阶了解Ruby正则应用的开发者。 使用场景及目标:适合于任何涉及到字符串数据的清理、提取、检验和替代的工作场景,...
Ruby表情符号正则表达式 :gem_stone: 一组Ruby正则表达式,用于匹配Unicode Emoji符号。背景这是基于 Javascript软件包的出色工作。 emoji-regex是根据Unicode联盟的数据巧妙地组合而成的。 本文提供的正则表达式...
这是将Ruby的正则表达式转换为JavaScript风格的Ruby宝石。 与,它可以处理Ruby的正则表达式功能,并且如果仍然存在任何不兼容之处,它会返回以表明它们。 这意味着您将有更好的机会来翻译正则表达式,并且如果...
RubyRegex是Ruby中很好的正则表达式集合 常用表达 RubyRegex::Url RubyRegex::Domain RubyRegex::Email RubyRegex::Username RubyRegex::USSocialSecurity RubyRegex::GeneralPostalCode RubyRegex::ZIPCode ...
### Ruby中的正则表达式详解:字符串匹配与替换操作 #### 一、引言 正则表达式(Regular Expression)是一种强大的模式匹配工具,在多种编程语言中都有...希望本文能为学习Ruby正则表达式的朋友们提供有用的参考。
正则表达式的内建支持通常只限于脚本语言如Ruby,Perl和awk等,这是一个耻辱:尽管正则表达式很神秘,但它是一个强大的文本处理工具。通过内建而不是通过程序库接口来支持它,有很大的不同。 正则表达式只是一种指定...
Ruby基础语法 Ruby变量与数据类型 Ruby控制结构 Ruby函数与方法 Ruby面向对象编程 ...Ruby正则表达式 Ruby网络编程 Ruby数据库交互 Ruby测试框架 RubyWeb框架Rails入门 Ruby高级特性 Ruby性能优化与最佳实践
"猫头鹰正则测试工具",即RegexBuddy,是一款备受开发者喜爱的正则表达式测试与调试工具,尤其在JS、Python、Java、.Net、XML、JGsoft、Ruby等多种编程语言环境中都有出色的表现。 RegexBuddy不仅提供了一个直观的...
OgreKit 是一款为 Cocoa 开发的正则表达式框架,该框架提供了一个与 Ruby 使用的相同的正则表达式引擎与一个高层次的 GUI 查找面板。可以在这里获取源码。 OgreKit 使用 Oniguruma/Onigmo 正则表达式引擎。...