详细介绍Ruby中的正则表达式


Posted in Python onApril 10, 2015

正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找其他字符串或字符串集合。
语法

正则表达式从字面上看是一种介于斜杠之间或介于跟在 %r 后的任意分隔符之间的模式,如下所示:

/pattern/
/pattern/im  # 可以指定选项
%r!/usr/local! # 一般的分隔的正则表达式
实例
#!/usr/bin/ruby
 
line1 = "Cats are smarter than dogs";
line2 = "Dogs also like meat";
 
if ( line1 =~ /Cats(.*)/ )
 puts "Line1 contains Cats"
end
if ( line2 =~ /Cats(.*)/ )
 puts "Line2 contains Dogs"
end

这将产生以下结果:

Line1 contains Cats

正则表达式修饰符

正则表达式从字面上看可能包含一个可选的修饰符,用于控制各方面的匹配。修饰符在第二个斜杠字符后指定,如上面实例所示。下标列出了 可能的修饰符:

详细介绍Ruby中的正则表达式

就像字符串通过 %Q 进行分隔一样,Ruby 允许您以 %r 作为正则表达式的开头,后面跟着任意分隔符。这在描述包含大量您不想转义的斜杠字符时非常有用。

# 下面匹配单个斜杠字符,不转义


%r|/|       
 
# Flag 字符可通过下面的语法进行匹配
%r[</(.*)>]i

正则表达式模式

除了控制字符,(+ ? . * ^ $ ( ) [ ] { } | \),其他所有字符都匹配本身。您可以通过在控制字符前放置一个反斜杠来对控制字符进行转义。

下表列出了 Ruby 中可用的正则表达式语法。

详细介绍Ruby中的正则表达式

详细介绍Ruby中的正则表达式详细介绍Ruby中的正则表达式详细介绍Ruby中的正则表达式详细介绍Ruby中的正则表达式详细介绍Ruby中的正则表达式搜索和替换

sub 和 gsub 及它们的替代变量 sub! 和 gsub! 是使用正则表达式时重要的字符串方法。

所有这些方法都是使用正则表达式模式执行搜索与替换操作。sub 和 sub! 替换模式的第一次出现,gsub 和 gsub! 替换模式的所有出现。

sub 和 gsub 返回一个新的字符串,保持原始的字符串不被修改,而 sub! 和 gsub! 则会修改它们调用的字符串。

下面是一个实例:

#!/usr/bin/ruby
 
phone = "2004-959-559 #This is Phone Number"
 
# 删除 Ruby 的注释
phone = phone.sub!(/#.*$/, "") 
puts "Phone Num : #{phone}"
 
# 移除数字以外的其他字符
phone = phone.gsub!(/\D/, "")  
puts "Phone Num : #{phone}"

这将产生以下结果:

Phone Num : 2004-959-559
Phone Num : 2004959559

下面是另一个实例:

#!/usr/bin/ruby
 
text = "rails are rails, really good Ruby on Rails"
 
# 把所有的 "rails" 改为 "Rails"
text.gsub!("rails", "Rails")
 
# 把所有的单词 "Rails" 都改成首字母大写
text.gsub!(/\brails\b/, "Rails")
 
puts "#{text}"

这将产生以下结果:

Rails are Rails, really good Ruby on Rails
Python 相关文章推荐
Python 面向对象 成员的访问约束
Dec 23 Python
在Python的Flask框架中使用模版的入门教程
Apr 20 Python
Python简单实现控制电脑的方法
Jan 22 Python
python3 破解 geetest(极验)的滑块验证码功能
Feb 24 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
Python命名空间的本质和加载顺序
Dec 17 Python
浅谈python新式类和旧式类区别
Apr 26 Python
anaconda中更改python版本的方法步骤
Jul 14 Python
python定位xpath 节点位置的方法
Aug 27 Python
Django 解决distinct无法去除重复数据的问题
May 20 Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 Python
python内置模块之上下文管理contextlib
Jun 14 Python
对于Python的Django框架部署的一些建议
Apr 09 #Python
Python线程中对join方法的运用的教程
Apr 09 #Python
在Python的Flask框架下使用sqlalchemy库的简单教程
Apr 09 #Python
详解Python中的正则表达式的用法
Apr 09 #Python
Python中几种操作字符串的方法的介绍
Apr 09 #Python
详解Python中的__new__()方法的使用
Apr 09 #Python
Python中动态获取对象的属性和方法的教程
Apr 09 #Python
You might like
Symfony2函数用法实例分析
2016/03/18 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
日期 时间js控件
2009/05/07 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
python实现朴素贝叶斯算法
2018/11/19 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
办公室保洁员岗位职责
2013/12/02 职场文书
大学生自荐材料范文
2014/12/30 职场文书
介绍信如何写
2015/01/31 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
食品安全主题班会
2015/08/13 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书