Ruby正则表达式
来源:互联网 发布:大数据在电商中的应用 编辑:程序博客网 时间:2024/04/30 20:44
正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找字符串集合。
正则表达式用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。
语法
正则表达式从字面上看是一种介于斜杠之间或介于跟在 %r 后的任意分隔符之间的模式,如下所示:
/pattern//pattern/im # 可以指定选项%r!/usr/local! # 使用分隔符的正则表达式
实例
#!/usr/bin/rubyline1 = "Cats are smarter than dogs";line2 = "Dogs also like meat";if ( line1 =~ /Cats(.*)/ ) puts "Line1 contains Cats"endif ( 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# -*- coding: UTF-8 -*-phone = "138-3453-1111 #这是一个电话号码"# 删除 Ruby 的注释phone = phone.sub!(/#.*$/, "") puts "电话号码 : #{phone}"# 移除数字以外的其他字符phone = phone.gsub!(/\D/, "") puts "电话号码 : #{phone}"
以上实例运行输出结果为:
电话号码 : 138-3453-1111 电话号码 : 13834531111
下面是另一个实例:
#!/usr/bin/ruby# -*- coding: UTF-8 -*-text = "rails 是 rails, Ruby on Rails 非常好的 Ruby 框架"# 把所有的 "rails" 改为 "Rails"text.gsub!("rails", "Rails")# 把所有的单词 "Rails" 都改成首字母大写text.gsub!(/\brails\b/, "Rails")puts "#{text}"
以上实例运行输出结果为:
Rails 是 Rails, Ruby on Rails 非常好的 Ruby 框架
0 0
- Ruby正则表达式
- ruby正则表达式
- ruby正则表达式
- Ruby中的正则表达式
- ruby 正则表达式
- ruby之正则表达式
- Ruby正则表达式笔记
- Ruby正则表达式
- Ruby 正则表达式(下)
- Ruby 正则表达式
- ruby正则表达式总结
- ruby 正则表达式
- Ruby 正则表达式
- ruby 正则表达式
- ruby中的正则表达式
- Ruby 正则表达式
- Ruby·正则表达式
- Ruby正则表达式编辑器
- fushionchart的Pie3D的具体使用方法
- java通过JDBC驱动连接操作hive实例
- 对Pedestrian Detection aided by Deep Learning Semantic Tasks的小结
- iOS开发UI篇—Quartz2D使用(绘制基本图形)
- Handler post()等在子线程中更新主线程的UI的方法使用小汇
- Ruby正则表达式
- spring 手动控制事务处理
- 利用类目扩充类目方法,以及延展实现
- 封装
- [Cool Node.js] 题记
- codeforces#326-B-Duff in Love-暴力
- Nutch2.3 + Mysql(错误解决方案)
- 5.访问web元素[2],IOC(控制反转)设计--只用这种-记住即可
- Linux下Tomcat使用80端口映射到8080端口