详细介绍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 07 Python
Python中文字符串截取问题
Jun 15 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
python3爬虫之设计签名小程序
Jun 19 Python
Python运维开发之psutil库的使用详解
Oct 18 Python
python调用其他文件函数或类的示例
Jul 16 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
Python求解排列中的逆序数个数实例
May 03 Python
Python定义一个Actor任务
Jul 29 Python
pycharm 快速解决python代码冲突的问题
Jan 15 Python
pycharm部署django项目到云服务器的详细流程
Jun 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函数)
2006/10/09 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
golang与PHP输出excel示例
2016/07/22 PHP
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
2013/12/24 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
列举Python中吸引人的一些特性
2015/04/09 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
Python对象与引用的介绍
2019/01/24 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
什么是事务?为什么需要事务?
2012/01/09 面试题
采购经理岗位职责
2014/02/16 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
赞助商致辞
2015/07/30 职场文书
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS