ruby对于正则表达式的使用是非常灵活的,提供了专门的正则表达式对象Regexp.其包括match实例方法,字符串也含有该方法.so可以这么做:

/a/ =~ "a"
"a" =~ /a/
"a".match("a")
/a/.match("a")

但是在新版的ruby中不可以这样:

"a" =~ "a" #error!

另外正则的比较还可以用操作符===,其返回true/false表示是否匹配,但是对调一下结果就不一样,这点要注意:

irb(main):079:0> "a"===/a/
=> false
irb(main):080:0> /a/==="a"
=> true

下面举一个例子:

irb(main):083:0> str
=> "vax12345tn19980202.!!!"
irb(main):084:0> v = str.match(/a(.)(\d+)(\D{1,5})(\d+)([,.:]?)/)
=> #<MatchData "ax12345tn19980202." 1:"x" 2:"12345" 3:"tn" 4:"19980202" 5:".">
irb(main):085:0> v[0]
=> "ax12345tn19980202."
irb(main):086:0> v[1]
=> "x"
irb(main):087:0> v[3]
=> "tn"
irb(main):088:0> v.begin 0
=> 1
irb(main):089:0> v.begin 3
=> 8
irb(main):090:0> v.end 3
=> 10
irb(main):091:0> v.offset 3
=> [8, 10]
irb(main):092:0> v.post_match
=> "!!!"
irb(main):093:0> v.pre_match
=> "v"
irb(main):094:0> v.string
=> "vax12345tn19980202.!!!"
irb(main):095:0> v[2]
=> "12345"

为了使用方便(类似于用过就丢代码),也有全局匹配的正则表达式对象$~,操作和上面类似:

irb(main):097:0> str.match(/a(.)(\d+)(\D{1,5})(\d+)([,.:]?)/)
=> #<MatchData "ax12345tn19980202." 1:"x" 2:"12345" 3:"tn" 4:"19980202" 5:".">
irb(main):098:0> $~
=> #<MatchData "ax12345tn19980202." 1:"x" 2:"12345" 3:"tn" 4:"19980202" 5:".">
irb(main):099:0> $&
=> "ax12345tn19980202."
irb(main):100:0> $`
=> "v"
irb(main):101:0> $'
=> "!!!"
irb(main):102:0> $+
=> "."
irb(main):103:0> $1
=> "x"
irb(main):104:0> $2
=> "12345"
irb(main):105:0> $3
=> "tn"

对于字符串也含有一些正则的表达式的实例方法,比如sub,gsub,scan等等,其中在sub,gsub之类的方法中第二个参数可以使用置换变量来表示:\&和\0表示整个匹配的字符串,\1至\9是第n个括号内匹配的字符串,另外也可以用\`,\'和\+它们和$`,$'和$+相对应:

irb(main):117:0> s="abc12345xyz"
=> "abc12345xyz"
irb(main):118:0> s.sub(/(\d+)/,'(\&)')
=> "abc(12345)xyz"

ruby正则表带式对象使用备忘相关推荐

  1. Oracle多表树型查询备忘

    Oracle的多表关系树查询与单表没有差别,只需要将父子关系理对即可: 表A是父表,有一个id字段 表B是关系表,s_id表示父节点,d_id表示子节点 表C是子表,有一个id字段 那么从根节点遍历到 ...

  2. MATLAB 备忘清单_开发速查表分享

    MATLAB 备忘清单 MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析.无线通信.深度学习.图像处理与计算机视觉.信号处理.量化金融与风险管理.机器人,控制系统等领域. MA ...

  3. 对象栈和运算栈c++(备忘整理)

    对象栈和运算栈c++(备忘整理) 1. 运算符优先级: https://blog.csdn.net/u011677209/article/details/76187091?ops_request_mi ...

  4. CSP浏览器安全策略备忘

    挺久之前过了一遍CSP的安全策略,很多人把它喻为XSS攻击的终结者,因为这种策略不再像传统只靠各种正则和特征匹配来识别跨站攻击Payload,而是直接从协议层把一些存在安全隐患的用法默认给干掉了,把同 ...

  5. HTML5终极备忘大全(图片版+文字版)

    评论:不久的将来html5必将统一前端标记性网页编程语言,这些新标签和新属性以后还要多记多用!仅在此处收藏之! 一.前言兼图片备忘 下图是我从testking网站上的Ultimate HTML5 Ch ...

  6. jQuery学习笔记--JqGrid相关操作 方法列表 备忘 重点讲解(超重要)

    JqGrid相关操作备忘 方法列表 特别推荐:怎样获取某一方某一列的值: [html] view plaincopy var rowdata=jQuery("#list").jqG ...

  7. vf更改当前路径_这份 window.location 备忘单,让你更有条理解决地址路径问题!...

    如果你想获取站点的URL信息,那么window.location对象什么很适合你!使用其属性获取有关当前页面地址的信息,或使用其方法进行某些页面重定向或刷新? https://segmentfault ...

  8. python熊猫图案_熊猫备忘单–适用于数据科学的Python

    python熊猫图案 Pandas is arguably the most important Python package for data science. Not only does it g ...

  9. PowerBuilder/PB常用备忘

    目录 1. PB使用Microsoft.XMLHttp组件的属性与方法 1-1 使用步骤 1-2 XMLHTTP方法: 1-3 XMLHTTP属性: 1-4 示例: 2. Pb中Window添加鼠标滚 ...

最新文章

  1. Java程序设计学习笔记(四)—— GUI
  2. “指定的文件名无效或太长” 无法拷贝,咋办
  3. 重磅下载 | 核心系统100%上云,揭秘双11背后的云原生实践
  4. c++ 对象数组_ArrayList实现分析(一)——对象创建
  5. java httpost阻塞_httpclient发送get请求阻塞?
  6. spark如何防止内存溢出_什么叫内存溢出?内存泄漏的定义又是什么?使用中如何避免?...
  7. 苹果XR信号差,可否要求苹果公司召回?
  8. Logback的配置说明
  9. 【iOS】iOS开发之使用Mac自动操作制作@1x@2x@3x图片(切图)
  10. LeetCode 647 回文子串
  11. font: 12px/1.5 Tahoma, Helvetica, Arial, sans-serif;
  12. 一步步用python制作游戏外挂【转】
  13. 微信小程序接收二进制流文件(图片预览,文件打开)
  14. [小设计] 之 抽奖算法
  15. 软件工程考C语言的学校,软件考研学校排名,软件工程性价比较高的考研学校有哪些?...
  16. 排序算法系列:归并排序算法
  17. python 白噪声检验-时间序列 平稳性检验 白噪声 峰度 偏度
  18. inet aton在java_地址转换函数:inet_aton inet_ntoa inet_addr和inet_pton inet_ntop
  19. ps 选区工具的使用
  20. html表格筛选,js实现表格筛选功能

热门文章

  1. 【转】QT#include GL/gl.h错误解决办法
  2. cropperjs裁剪上传头像使用方法
  3. 腾讯应用宝上传应用步骤
  4. JAVA获取时间戳,哪个更快
  5. css选择器的优先级,以及用法
  6. 那些用C语言写诗的日子[转]
  7. Spring 事务管理的详细讲解及使用
  8. 产品三维动画成为新一代营销手段
  9. 最简单替换证件照背景色的方法
  10. requests爬虫请求头获得方法