Ruby 正则表达式
-
正则表达式
正则表达式是一个字符的特殊序列,可帮助您匹配或查找使用的模式举办了专门的语法串的其他字符串或设置。正则表达式文本是斜线之间或任意分隔符接着%R如下之间的图案-/pattern/ /pattern/im # 选项可指定 %r!/usr/local! # 一般带分隔符的正则表达式
实例
尝试一下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
-
正则表达式修饰符
修饰符 说明 i 当匹配文本时忽略大小写。 o 仅在regexp文字第一次计算时执行#{}内插。 x 在正则表达式中忽略空格并允许注释。 m 匹配多行,将换行符识别为普通字符。 u,e,s,n 将regexp解释为Unicode (UTF-8)、EUC、SJIS或ASCII。如果没有指定这些修饰符,则假定正则表达式使用源编码。 像用%Q分隔的字符串文字一样,Ruby允许您以%r开头正则表达式,后跟您选择的分隔符。当您描述的模式包含很多不想转义的正斜杠字符时,这很有用-#后面匹配单斜杠字符,不需要转义 %r|/| # 这种语法也允许使用标志字符 %r[]i
除控制字符(+ ? . * ^ $ ( ) [ ] { } | \)外,所有字符都匹配。您可以在控制字符前加反斜杠来对其进行转义。 -
搜索和替换
使用正则表达式的一些最重要的字符串方法是sub和gsub,以及它们的变体sub!和gsub!。所有这些方法都使用Regexp模式执行搜索和替换操作。sub & sub!取代第一次出现的图案和gsub & gsub!替换所有出现。sub和gsub返回一个新字符串,保留原始的未修改的位置为sub!和gsub!修改调用它们的字符串。下面是例子——
尝试一下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}"
以下是另一个示例-
尝试一下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}"