详细介绍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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
Python基础之函数用法实例详解
Sep 10 Python
Python的面向对象思想分析
Jan 14 Python
python中字符串类型json操作的注意事项
May 02 Python
Python实现一个简单的验证码程序
Nov 03 Python
快速了解python leveldb
Jan 18 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
关于numpy.where()函数 返回值的解释
Dec 06 Python
python 回溯法模板详解
Feb 26 Python
python 爬取哔哩哔哩up主信息和投稿视频
Jun 07 Python
python使用shell脚本创建kafka连接器
Apr 29 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
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
php异常处理方法实例汇总
2015/06/24 PHP
PHP发送短信代码分享
2015/08/11 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
2019/11/13 PHP
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Python多进程原理与用法分析
2018/08/21 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
英文简历自荐信范文
2013/12/11 职场文书
微博营销计划书
2014/01/10 职场文书
食堂个人先进事迹
2014/01/22 职场文书
元旦晚会策划方案
2014/02/18 职场文书
优秀员工获奖感言
2014/03/01 职场文书
工作失职检讨书
2015/01/26 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
python 批量压缩图片的脚本
2021/06/02 Python