正则表达式是特殊的字符序列,可帮助您使用模式中保留的特殊语法来匹配或查找其他字符串或字符串集。

正则表达式文字是斜线之间或任意定界符之间的模式,后跟%r,如下所示-

正则语法

/pattern/
/pattern/im    # option can be specified
%r!/usr/local! # general delimited regular expression

示例

#!/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

正则修饰符

正则表达式文字可以包括可选的修饰符,以控制匹配的各个方面。

Sr.No.描述
1

i

匹配文本时忽略大小写。

2

o

仅在第一次判断regexp文字时执行一次#{}插值。

链接:https://www.learnfk.com/ruby/ruby-regular-expressions.html

来源:LearnFk无涯教程网

3

x

忽略空格,并允许使用正则表达式进行注释。

4

m

匹配多行,将换行符识别为普通字符。

5

u,e,s,n

将正则表达式解释为Unicode(UTF-8),EUC,SJIS或ASCII。如果未指定这些修饰符,则假定正则表达式使用源编码。

就像用%Q分隔的字符串文字一样,Ruby允许您以%r开头正则表达式,后跟您选择的分隔符。当您描述的模式包含许多不想转义的正斜杠字符时,这很有用-

# Following matches a single slash character, no escape required
%r|/|

# Flag characters are allowed with this syntax, too
%r[</(.*)>]i

正则表达模式

除控制字符(+?。* ^&dollar;()[] {} |\)外,所有字符均匹配。 您可以在控制字符前加反斜杠来对其进行转义。

搜索和替换

使用正则表达式的一些最重要的String方法是 sub 和 gsub ,以及它们的变体 sub!和 gsub !。

sub 和 gsub 返回一个新字符串,保留原始字符串不变,其中 sub!和 gsub!修改调用它们的字符串。

#!/usr/bin/ruby

phone="2004-959-559 #This is Phone Number"

# Delete Ruby-style comments
phone=phone.sub!(/#.*$/, "")   
puts "Phone Num : #{phone}"

# Remove anything other than digits
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"

# Change "rails" to "Rails" throughout
text.gsub!("rails", "Rails")

# Capitalize the word "Rails" throughout
text.gsub!(/\brails\b/, "Rails")
puts "#{text}"

这将产生以下输出-

Rails are Rails, really good Ruby on Rails

这一章你学到了什么?来做个笔记,好记忆不如烂笔头! 如果觉得对您有帮助,麻烦帮分享给您的朋友😊😊

祝学习愉快!(如果觉得不正确,选中要修改的内容->右键->编辑)

点我分享笔记