一步一步学Ruby(九):Ruby正则表达式(上)

简介:

先推荐一个在线的Ruby正则表达式编辑器http://www.rubular.com/

image

Ruby的正则表达式以"//"作为构造方法。表达式返回一个RegExp的对象。

image 
  一般规则: 
  /a/匹配字符a。    
  /\?/匹配特殊字符?。特殊字符包括^, $, ? , ., /, \, [, ], {, }, (, ), +, *.    
  .匹配任意字符,例如/a./匹配ab和ac。    
  /[ab]c/匹配ac和bc,[]之间代表范围。例如:/[a-z]/ , /[a-zA-Z0-9]/。    
  /[^a-zA-Z0-9]/匹配不在该范围内的字符串。    
  /[\d]/代表任意数字
  /[\w]/代表任意字母,数字或者_
  /[\s]/代表空白字符,包括空格,TAB和换行。    
  /[\D]/,/[\W]/,/[\S]/均为上述的否定情况。 
  高级规则: 
  ?代表0或1个字符。/Mrs?\.?/匹配"Mr","Mrs","Mr.","Mrs."。 
  *代表0或多个字符。/Hello*/匹配"Hello","HelloJack"。 
  +代表1或多个字符。/a+c/匹配:"abc","abbdrec"等等。 
  /d{3}/匹配3个数字。 
  /d{1,10}/匹配1-10个数字。 
  /d{3,}/匹配3个数字以上。 
  /([A-Z]\d){5}/匹配首位是大写字母,后面4个是数字的字符串。

下图匹配的是:M后面是字符r, 后面是0或1个字符s, 在后面是0或1个字符"." , 匹配Mr、Mrs、Mr.、Mrs.

image

下面可以匹配</p>, </  p>,</p  >,<   /p>.

image 

 

正则表达式操作 
  String和RegExp均支持=~和match 2个查询匹配方法

image

  可以看出,如果能够匹配,=~返回匹配的字符串位置,而match返回一个MatchData对象。如果不匹配返回nil。 
  MatchData可以取出其中符合各个子匹配的内容。看下面的例子: 
image  

  m[0]返回匹配主表达式的字符串
  下面的方法是等同的: 
  m[n] == m.captures[n]

Ruby也自动的为我们填写了一些全局变量,它们以数字做名: $1,$2,等等,$1包含的是正则表达式中从左侧开始的第一对小括号内的子模式所匹配的字符串

我们看出匹配时,是从外到内,从左到右的顺序
其它的一些方法
  image

本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2009/02/02/1382745.html如需转载请自行联系原作者


王德水

相关文章
|
7月前
|
Ruby
|
4月前
|
Ruby
探索深究Ruby 正则表达式
【8月更文挑战第30天】
33 1
|
4月前
|
开发者 Ruby
Ruby正则表达式的奥秘:如何用简单的语法构建强大的文本匹配与处理工具?
【8月更文挑战第31天】正则表达式是文本匹配的强大工具,通过简单模式即可实现复杂文本处理。作为动态、面向对象的语言,Ruby提供了全面的正则表达式支持,涵盖创建、匹配、替换及分割等功能。本文通过示例代码介绍如何在Ruby中使用正则表达式进行文本匹配,并分享了编写正则表达式的最佳实践,帮助开发者提升文本处理效率与准确性,更好地利用这一工具构建高效系统。
40 0
|
7月前
|
Ruby
|
7月前
|
Ruby
|
Ruby 索引
【Ruby on Rails全栈课程】2.5 正则表达式
1、正则表达式(Regexp) 正则表达式是对字符串操作的公式,用来过滤字符串或者从字符串中匹配出我们需要的字符,在各类语言中都有应用
126 0
【Ruby on Rails全栈课程】2.5 正则表达式
Rubular: 基于 Web 的 Ruby 正则表达式编辑器
当我们在 Ruby 项目中使用正则表达式时,如果想要即刻看到该正则的匹配结果,似乎除了跑代码外别无他法。假如匹配有误,我们必须回头重新修订正则表达式。如此周而复始,不仅效率低下,而且费时不少。如果我们利用Rubular 这个基于 Web 的 Ruby正则表达式编辑器,则问题迎刃而解。
525 0
Rubular: 基于 Web 的 Ruby 正则表达式编辑器
ruby的正则表达式操作(1)
ruby语言中用~/字符/来匹配表达式,$`得到匹配之前的那部分字符串,$'得到匹配之后的字符串,$&得到匹配到的字符串,如下所示 def show_regexp(a,re)    if a=~re        puts "#{$`}#{$'}"    else        puts "no ...
708 0
|
Ruby 移动开发
ruby的正则表达式操作(2)
ruby的正则表达式中的字符类缩写 字符      是         含义 \d                [0-9]                   数字字符 \D                [^0-9]                     除数字之外的任何字符 \s  ...
684 0