正則表達式是一種特殊序列的字符,它通過使用有專門語法的模式來匹配或查找其他字符串或字符串集合。
語法
正則表達式從字面上看是一種介于斜杠之間或介于跟在 %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"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 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-559Phone 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
新聞熱點
疑難解答
圖片精選