详细介绍Ruby中的正则表达式

所属分类: 脚本专栏 / python 阅读数: 1420
收藏 0 赞 0 分享

正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找其他字符串或字符串集合。
语法

正则表达式从字面上看是一种介于斜杠之间或介于跟在 %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

正则表达式修饰符

正则表达式从字面上看可能包含一个可选的修饰符,用于控制各方面的匹配。修饰符在第二个斜杠字符后指定,如上面实例所示。下标列出了 可能的修饰符:

201541093958504.jpg (982×274)

就像字符串通过 %Q 进行分隔一样,Ruby 允许您以 %r 作为正则表达式的开头,后面跟着任意分隔符。这在描述包含大量您不想转义的斜杠字符时非常有用。

# 下面匹配单个斜杠字符,不转义


%r|/|       
 
# Flag 字符可通过下面的语法进行匹配
%r[</(.*)>]i 

正则表达式模式

除了控制字符,(+ ? . * ^ $ ( ) [ ] { } | \),其他所有字符都匹配本身。您可以通过在控制字符前放置一个反斜杠来对控制字符进行转义。

下表列出了 Ruby 中可用的正则表达式语法。

201541094045775.jpg (957×701)

201541094114283.jpg (957×731)201541094152882.jpg (956×720)201541094244206.jpg (951×711)201541094311488.jpg (943×723)201541094334570.jpg (964×279)搜索和替换

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 matplotlib模块及柱状图用法解析

这篇文章主要介绍了Python matplotlib模块及柱状图用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Python getattr()函数使用方法代码实例

这篇文章主要介绍了Python getattr()函数使用方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Python 发送邮件方法总结

这篇文章主要介绍了Python 发送邮件的几种方法,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

拿来就用!Python批量合并PDF的示例代码

这篇文章主要介绍了Python批量合并PDF的示例代码,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

Python如何爬取b站热门视频并导入Excel

这篇文章主要介绍了Python如何爬取b站热门视频并导入Excel,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Python进行统计建模

这篇文章主要介绍了Python进行统计建模的方法,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

Python多线程的退出控制实现

这篇文章主要介绍了Python多线程的退出控制实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

如何在python中实现线性回归

这篇文章主要介绍了如何在python中实现线性回归,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

python多线程semaphore实现线程数控制的示例

这篇文章主要介绍了python多线程semaphore实现线程数控制的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

推荐值得学习的12款python-web开发框架

这篇文章主要介绍了值得学习的12款python-web开发框架,帮助大家更好的理解和学习Python web开发,感兴趣的朋友可以了解下
收藏 0 赞 0 分享
查看更多