详细介绍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代理抓取并验证使用多线程实现
May 03 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
Python操作word常见方法示例【win32com与docx模块】
Jul 17 Python
Python实现注册、登录小程序功能
Sep 21 Python
Python中的引用知识点总结
May 20 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
python Shapely使用指南详解
Feb 18 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
Python实现京东抢秒杀功能
Jan 25 Python
Python采集壁纸并实现炫轮播
Apr 30 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
PHP6新特性分析
2016/03/03 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
在 Laravel 中动态隐藏 API 字段的方法
2019/10/25 PHP
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
Django 对IP访问频率进行限制的例子
2019/08/30 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
塔吉特百货公司官网:Target
2017/04/27 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
迎新晚会邀请函
2014/02/01 职场文书
运动会方阵解说词
2014/02/12 职场文书
挂科检讨书范文
2014/02/20 职场文书
《识字五》教学反思
2014/03/01 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
无罪辩护词范文
2015/05/21 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python