• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ruby1.9regex(namedcapturegroup)正则名组

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

regexp = /a/
result = subject.scan(regexp)
ruby-1.9.2-p0 > result = subject.scan(regexp)
NameError: undefined local variable or method `subject' for main:Object
from (irb):8
from /home/mlzboy/.rvm/rubies/ruby-1.9.2-p0/bin/irb:16:in `<main>'
ruby-1.9.2-p0 > subject="abcabc"
 => "abcabc" 
ruby-1.9.2-p0 > result = subject.scan(regexp)
 => ["a", "a"] 
ruby-1.9.2-p0 > ^C
ruby-1.9.2-p0 > 
2011-01-08

Ruby 1.9 regex (named capture group)

文章分类:Ruby编程
Ruby 1.9正则增加了支持命名组,这样使得正则具有更好的可读行, 
你可以定义每一部分的正则,然后命名成组,并且在后面加上 
{0},表明不获取匹配内容,然后在使用\g引用对用的组,组成 
大的正则,并且加上/x修饰。这样比较复杂的正则,会有更好的可读性。 
Ruby代码 
  1. users = %w{  
  2.    alice:10.23.52.112:true  
  3.    bob:192.168.10.34:false  
  4.  }  
  5.    
  6.  user_regexp = %r{  
  7.    (?<username> [a-z]+ ){0}  
  8.    (?<ip_number> [0-9]{1,3} ){0}  
  9.    (?<ip_address> (\g<ip_number>\.){3}\g<ip_number> ){0}  
  10.    (?<admin> true | false ){0}  
  11.    \g<username>:\g<ip_address>:\g<admin>  
  12.  }x  
  13.   
  14. users.each do |u|  
  15.     r = user_regexp.match(u)  
  16.     puts "User #{r[:username]} is from #{r[:ip_address]}"  
  17. end  

使用match和hash的方式,以组的命名作为key就可以访问匹配内容了。
ruby正则教程


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ruby页面采集库发布时间:2022-07-14
下一篇:
诗歌rails之关于rubyscript/runner发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap