正则表达式是特殊的字符序列,可帮助您使用模式中保留的特殊语法来匹配或查找其他字符串或字符串集。
正则表达式文字是斜线之间或任意定界符之间的模式,后跟%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. | Remark |
---|---|
1 | i 匹配文本时忽略大小写。 |
2 | o 仅在第一次判断regexp文字时执行一次#{}插值。 链接:https://www.learnfk.comhttps://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
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)