详细介绍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实现类继承实例
Jul 04 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
python删除列表内容
Aug 04 Python
Python实现FTP上传文件或文件夹实例(递归)
Jan 16 Python
Python去除、替换字符串空格的处理方法
Apr 01 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
用python实现k近邻算法的示例代码
Sep 06 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 Python
使用Python函数进行模块化的实现
Nov 15 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
Django框架中模型的用法
Jun 10 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
超级强大的表单验证
2006/06/26 Javascript
拖拉表格的JS函数
2008/11/20 Javascript
JS的反射问题
2010/04/07 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
js模拟微博发布消息
2017/02/23 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
Django实现组合搜索的方法示例
2018/01/23 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
html5开发之viewport使用
2013/10/17 HTML / CSS
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
Android笔试题总结
2014/11/29 面试题
园林技术个人的自我评价
2014/01/08 职场文书
中学生操行评语大全
2014/04/24 职场文书
代领毕业证委托书
2014/08/02 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
Go语言安装并操作redis的go-redis库
2022/04/14 Golang