详细介绍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中使用ConfigParser解析ini配置文件实例
Aug 30 Python
Python的Tornado框架异步编程入门实例
Apr 24 Python
Python中几个比较常见的名词解释
Jul 04 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
浅谈pyhton学习中出现的各种问题(新手必看)
May 17 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
Jun 27 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
django 控制页面跳转的例子
Aug 06 Python
对Django中内置的User模型实例详解
Aug 16 Python
python实现一次性封装多条sql语句(begin end)
Jun 06 Python
paramiko使用tail实时获取服务器的日志输出详解
Dec 06 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
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
php 获取完整url地址
2008/12/20 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
Javascript访问器属性实例分析
2014/12/30 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
物流管理应届生求职信
2013/11/07 职场文书
酒店管理专业毕业生推荐信
2013/11/10 职场文书
任命书格式
2014/06/05 职场文书
超市创意活动方案
2014/08/15 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
联谊会开场白
2015/06/01 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL