详细介绍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高并发异步服务器核心库forkcore使用方法
Nov 26 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
用python实现面向对像的ASP程序实例
Nov 10 Python
Python实现将n个点均匀地分布在球面上的方法
Mar 12 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
May 25 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
selenium3+python3环境搭建教程图解
Dec 07 Python
python实现函数极小值
Jul 10 Python
Python环境下安装PyGame和PyOpenGL的方法
Mar 25 Python
零基础学python应该从哪里入手
Aug 11 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与已存在的Java应用程序集成
2006/10/09 PHP
php 中英文语言转换类代码
2011/08/11 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
js 走马灯简单实例
2013/11/21 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
使用python统计文件行数示例分享
2014/02/21 Python
python操作CouchDB的方法
2014/10/08 Python
python入门教程之识别验证码
2017/03/04 Python
python算法表示概念扫盲教程
2017/04/13 Python
Django入门使用示例
2017/12/12 Python
Python中使用支持向量机(SVM)算法
2017/12/26 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
Django中template for如何使用方法
2021/01/31 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
北大青鸟学生求职信
2013/09/24 职场文书
《手指教学》反思
2014/02/14 职场文书
颁奖晚会主持词
2014/03/25 职场文书
我的长生果教学反思
2014/04/28 职场文书
在职证明格式样本
2015/06/15 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
Python基本知识点总结
2022/04/07 Python
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers