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

原文地址为: 一步一步学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

本文作者: 王德水

未经同意,禁止转载


转载请注明本文地址: 一步一步学Ruby(九):Ruby正则表达式(上)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值