关于正则表达式中的(?=re)的理解和例子

关于regular expression中的 (?=re) 我的理解就是“匹配,但不包含在结果内” (Matches re at this point, but does not consume it)。

从"Programming Ruby - The Pragmatic Programmer's Guide"摘的例子:

str  =   " red, white, and blue "
   
1 ) str.scan(/[a-z]+,/)          结果: ["red," "white,"]
2) str . scan( / [a-z] + (?=,) / )   结果: [ " red " ,   " white " ]

逗号没有包含在2)的 匹配的 结果内

另外一个我简化过的例子:
1) " -123456789 " .gsub( / (/d)(/d{3}+$)/,'/1,/2')        结果:"-123,456789"
2) " -123456789 " .gsub( / (/d)( ?=/d {3} +$) / , ‘/1,' )     结果: " -123,456,789 "

因为
/d {3} +$ 没有包含在匹配的结果内+gsub,产生递归的效果。而1)则没有

原例子见: http://rubyforge.org/snippet/detail.php?type=snippet&id=8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值