正則表達式字面值
/pattern/
/pattern/im # 修飾符
%r!/usr/local! # 任意分隔符
基本匹配範例
line1 = "Cats are smarter than dogs"
line2 = "Dogs also like meat"
if line1 =~ /Cats(.*)/
puts "Line1 starts with Cats"
end
# 輸出: Line1 starts with Cats
修飾符
i:忽略大小寫
m:多行模式(. 匹配換行)
x:延伸語法(忽略空白、允許註解)
常用模式元字元
| 模式 | 說明 |
| ^ $ | 行首/行尾 |
| \A \z | 字串開頭/結尾 |
| . | 任意字元(預設不含換行) |
| \d \D | 數字/非數字 |
| \s \S | 空白/非空白 |
| \w \W | 單字字元/非單字字元 |
| * + ? | 0或多/1或多/0或1 |
| {n,m} | 重複 n 到 m 次 |
| [abc] | 字元類別 |
| (...) | 分組捕獲 |
搜尋與替換:sub / gsub
phone = "2004-959-559 #This is Phone Number"
# 移除註解
phone.sub!(/#.*$/, "") # "2004-959-559 "
# 只保留數字
phone.gsub!(/\D/, "") # "2004959559"
text = "rails are rails, really good Ruby on Rails"
text.gsub!("rails", "Rails") # 字串替換
text.gsub!(/\brails\b/, "Rails") # 單字邊界替換
puts text # "Rails are Rails, really good Ruby on Rails"
sub! / gsub! 差異
sub / gsub:回傳新字串,原字串不變。
sub! / gsub!:就地修改原字串,回傳修改後字串(若無變更回傳 nil)。