Ruby 正則表達式
引言
正則表達式(Regular Expression,簡稱Regex)是一種強大的文本處理工具,在編程和數據處理中有著廣泛的應用。Ruby 作為一種動態、靈活的編程語言,同樣內置了強大的正則表達式功能。本文將詳細介紹 Ruby 中的正則表達式,包括其語法、匹配模式、以及在實際開發中的應用。
Ruby 正則表達式基礎
1. 正則表達式語法
Ruby 中的正則表達式使用反斜杠(\)作為轉義字符,以下是常用的一些元字符:
\d
:匹配一個數字字符(0-9)。\w
:匹配一個字母數字或下劃線字符(等同于[a-zA-Z0-9_]
)。\s
:匹配任何空白字符(空格、制表符、換行符等)。.
:匹配除換行符以外的任意字符。[]
:匹配括號內的任意一個字符。[^]
:匹配不在括號內的任意一個字符。*
:匹配前面的子表達式零次或多次。+
:匹配前面的子表達式一次或多次。?
:匹配前面的子表達式零次或一次。{n}
:匹配前面的子表達式恰好 n 次。{n,}
:匹配前面的子表達式至少 n 次。{n,m}
:匹配前面的子表達式至少 n 次,但不超過 m 次。
2. 正則表達式匹配模式
Ruby 中的正則表達式支持多種匹配模式,包括:
match
:匹配整個字符串,返回匹配的結果。match?
:匹配整個字符串,返回布爾值。scan
:匹配整個字符串,返回所有匹配的結果。split
:按照正則表達式分割字符串,返回分割后的數組。gsub
:將匹配的文本替換為指定的內容。
Ruby 正則表達式應用
1. 字符串匹配
str = "Hello, world!"
match_data = str.match(/\w+/)
puts match_data.to_s # 輸出: Hellomatch_data = str.match?(/\w+/)
puts match_data # 輸出: truematch_data = str.scan(/\w+/)
puts match_data.to_s # 輸出: ["Hello", "world"]str = "The quick brown fox jumps over the lazy dog"
split_data = str.split(/\s+/)
puts split_data.to_s # 輸出: ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"]
2. 字符串替換
str = "The quick brown fox jumps over the lazy dog"
puts str.gsub(/\w+/) { |word| word.upcase } # 輸出: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
3. 驗證輸入
email = "example@example.com"
if email.match(/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/)puts "Valid email"
elseputs "Invalid email"
end
總結
Ruby 正則表達式是 Ruby 語言中強大的文本處理工具,可以方便地進行字符串匹配、替換、分割等操作。掌握正則表達式對于 Ruby 開發者來說至關重要。本文介紹了 Ruby 正則表達式的基礎語法、匹配模式和實際應用,希望能對讀者有所幫助。