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

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

正则表达式从字面上看是一种介于斜杠之间或介于跟在 %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
ruby正则表达式、ruby gsub 正则表达式、ruby 正则表达式 匹配、ruby 正则表达式 变量、详细地址正则表达式,以便于您获取更多的相关知识。

时间: 2016-04-10
Tags: ruby

详细介绍Ruby中的正则表达式_python的相关文章

详细介绍Python中的偏函数_python

Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度.而偏函数也可以做到这一点.举例如下: int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换: >>> int('12345') 12345 但int()函数还提供额外的base参数,默认值为10.如果传入base参数

举例初步讲解Ruby中的正则表达式

  这篇文章主要介绍了Ruby中的正则表达式,是Ruby学习进阶当中的重要知识,需要的朋友可以参考下 正则表达式是一个特殊的字符序列可以帮助匹配或者找到其他字符串或串套,使用的模式保持一个专门的语法. 正则表达式文本是一个模式之间的斜线之间或任意分隔符 %r 如下: 语法: 复制代码 代码如下: /pattern/ /pattern/im # option can be specified %r!/usr/local! # general delimited regular expression

详细解析Ruby中的变量

这篇文章主要介绍了详细解析Ruby中的变量,是Ruby学习中最基础的知识之一,需要的朋友可以参考下 变量持有要使用的程序的数据的存储位置. Ruby支持的有五种类型的变量.在前面的章节中已经经历了一个简短描述以及这些变量.本章中介绍的这五种类型的变量. Ruby的全局变量: 全局变量以$开头.未初始化的全局变量的值是零,并使用-w选项产生警告. 全局变量的赋值会改变全局状态.这是不推荐使用全局变量.他们使得程序的含义模糊. 下面是一个例子显示使用全局变量. ? 1 2 3 4 5 6 7 8 9

详细解析Ruby中的变量_ruby专题

 变量持有要使用的程序的数据的存储位置. Ruby支持的有五种类型的变量.在前面的章节中已经经历了一个简短描述以及这些变量.本章中介绍的这五种类型的变量. Ruby的全局变量: 全局变量以$开头.未初始化的全局变量的值是零,并使用-w选项产生警告. 全局变量的赋值会改变全局状态.这是不推荐使用全局变量.他们使得程序的含义模糊. 下面是一个例子显示使用全局变量. #!/usr/bin/ruby $global_variable = 10 class Class1 def print_global

介绍Ruby中的模块与混合类型的相关知识

  这篇文章主要介绍了Ruby中的模块与混合类型的相关知识,包括平常人们常说的多态与继承等相关知识点,需要的朋友可以参考下 模块是组合在一起的方法,类和常量.模块两个主要好处: 模块提供了一个命名空间,并避免名称冲突. 模块实现混合工厂. 模块定义了一个命名空间,一个沙箱中方法和常量可以自由使用,而不必担心踩到其他的方法和常数. 语法: ? 1 2 3 4 5 module Identifier statement1 statement2 ........... end 就像被命名为类常量模块中

详细介绍Python的鸭子类型_python

鸭子类型基本定义 首先Python不支持多态,也不用支持多态,python是一种多态语言,崇尚鸭子类型. 以下是维基百科中对鸭子类型得论述: 在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定.这个概念的名字来源于由James Whitcomb Riley提出的鸭子测试,"鸭子测试"可以这样表述: "当看到一只鸟走起来像鸭子.游泳起来像鸭子.叫起来也

Ruby中使用正则表达式的基础指引_ruby专题

正则表达式的内建支持通常只限于脚本语言如Ruby,Perl和awk等,这是一个耻辱:尽管正则表达式很神秘,但它是一个强大的文本处理工具.通过内建而不是通过程序库接口来支持它,有很大的不同. 正则表达式只是一种指定字符模式的方法,这个字符模式会在字符串中进行匹配.在Ruby中,通常在斜线之间(/pattern/)编写模式(pattern)来创建正则表达式.同时,Ruby就是Ruby,正则表达式是对象并且可以当作对象来操作. 比如,可以使用如下的正则表达式来编写模式,它会匹配包含Perl或Pytho

介绍Ruby中的模块与混合类型的相关知识_ruby专题

模块是组合在一起的方法,类和常量.模块两个主要好处:     模块提供了一个命名空间,并避免名称冲突.     模块实现混合工厂. 模块定义了一个命名空间,一个沙箱中方法和常量可以自由使用,而不必担心踩到其他的方法和常数. 语法: module Identifier statement1 statement2 ........... end 就像被命名为类常量模块中的常量,首字母大写.定义的方法看起来很相似,模块定义方法就像类的方法. 调用一个模块方法和类方法一样,通过模块的名称它名字前,引用一

简单介绍Ruby中的CGI编程_python

Ruby 是一门通用的语言,不仅仅是一门应用于WEB开发的语言,但 Ruby 在WEB应用及WEB工具中的开发是最常见的. 使用Ruby您不仅可以编写自己的SMTP服务器,FTP程序,或Ruby Web服务器,而且还可以使用Ruby进行CGI编程. 接下来,让我们花点时间来学校Ruby的CGI编辑.编写 CGI 脚本 最脚本的 Ruby CGI 代码如下所示: #!/usr/bin/ruby puts "HTTP/1.0 200 OK" puts "Content-type: