详细介绍Ruby中的正则表达式
作者:goldensun 时间:2023-12-03 19:44:46
正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找其他字符串或字符串集合。
语法
正则表达式从字面上看是一种介于斜杠之间或介于跟在 %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
正则表达式修饰符
正则表达式从字面上看可能包含一个可选的修饰符,用于控制各方面的匹配。修饰符在第二个斜杠字符后指定,如上面实例所示。下标列出了 可能的修饰符:
就像字符串通过 %Q 进行分隔一样,Ruby 允许您以 %r 作为正则表达式的开头,后面跟着任意分隔符。这在描述包含大量您不想转义的斜杠字符时非常有用。
# 下面匹配单个斜杠字符,不转义
%r|/|
# Flag 字符可通过下面的语法进行匹配
%r[</(.*)>]i
正则表达式模式
除了控制字符,(+ ? . * ^ $ ( ) [ ] { } | \),其他所有字符都匹配本身。您可以通过在控制字符前放置一个反斜杠来对控制字符进行转义。
下表列出了 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
标签:Ruby
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python使用matplotlib绘制多个图形单独显示的方法示例
2022-02-13 09:45:44
![](https://img.aspxhome.com/file/2023/2/90692_0s.png)
全面理解Python中self的用法
2022-10-09 07:16:50
分析Python中解析构建数据知识
2022-01-12 10:23:48
关于vue中根据用户权限动态添加路由的问题
2024-05-05 09:25:11
![](https://img.aspxhome.com/file/2023/2/128892_0s.png)
Django vue前后端分离整合过程解析
2022-04-07 21:01:04
![](https://img.aspxhome.com/file/2023/0/80490_0s.png)
Mysql8.0.22解压版安装教程(小白专用)
2024-01-15 15:37:29
![](https://img.aspxhome.com/file/2023/1/78201_0s.png)
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022-02-17 09:35:32
CentOS7.2安装MySql5.7并开启远程连接授权的教程
2024-01-16 15:40:58
![](https://img.aspxhome.com/file/2023/6/75066_0s.png)
python实现从ftp上下载文件的实例方法
2021-04-24 16:37:02
Discuz!NT 论坛整合ASP程序论坛教程
2011-03-31 11:09:00
Linux系统中MySQL的常用操作命令
2024-01-18 22:00:10
JS中getElementsByClassName与classList兼容性问题解决方案分析
2023-08-25 05:39:06
关于CSS中字号控制的兼容性研究
2010-01-23 12:48:00
Python 内置函数sorted()的用法
2021-02-18 10:20:23
使用pycharm生成代码模板的实例
2021-03-07 04:57:52
Golang 操作TSV文件的实战示例
2023-07-18 06:46:01
Vue数据增删改查与表单验证的实现流程介绍
2024-05-28 15:42:51
![](https://img.aspxhome.com/file/2023/8/123198_0s.png)
python 统计代码耗时的几种方法分享
2023-11-03 19:51:06
![](https://img.aspxhome.com/file/2023/4/63274_0s.png)
Python命名空间及作用域原理实例解析
2021-05-10 17:57:40
![](https://img.aspxhome.com/file/2023/0/78720_0s.png)
一起来学习Python的元组和列表
2023-07-23 02:43:32
![](https://img.aspxhome.com/file/2023/1/77701_0s.png)