ruby對正規表示式支援非常好,下面將對我經常使用到的做乙個總結,包括ruby中正則的寫法,匹配的方法,替換,分組匹配等。
主要有三種
/mm\/dd/,regexp.new(「mm/dd」),%r三者效果相同,實質都是新建了乙個regexp的類。
/cat/ =~ "dog and cat" #返回8
mt = /cat/.match("bigcatcomes")
"#->#<-#" #返回big->cat<-comes
很多時候匹配是為了替換,ruby中進行正則替換非常簡單,兩個方法即可搞定,sub()+gsub()。
sub只替換第一次匹配,gsub(g:global)會替換所有的匹配,沒有匹配到返回原字串的copy
str = "abdada"
new_str = str.sub(/a/, "*") #返回"*bdada"
new_str2 = str.gsub(/a/, "*") #返回"*bd*d*"
如果想修改原始字串用sub!()和gsub!(),沒有匹配到返回nil。
方法後面還可以跟block,對匹配的字串進行操作
a.gsub(/[aeiou]/) # => "quick brown fox"
ruby的分組匹配與其它語言差別不大,分組匹配表示式是對要進行分組的內容加()。
對於匹配到的結果,可以用系統變數#$1,#$2…索引,也可用matchdata陣列來索引
md = /(\d\d):(\d\d)(..)/.match("12:50am") # md為乙個matchdata物件
puts "hour is #$1, minute #$2"
puts "hour is #, minute #"
regexp#match()只能匹配一次,如果想匹配所有要用regexp#scan()
用法示例:
"abcabcabz".scan(%r).each # 輸出2行abc
一般是在原來表示式結尾加?就由貪婪匹配變成了懶惰匹配。常用的懶惰限定符有(去年最後的問題就是貪婪匹配):
標籤:
ruby
ruby迷,謝謝!
ruby正規表示式
ruby用 將正規表示式括起來。表示開頭,表示結尾,表示0個以上的任意字元。現在就講講正規表示式的規則的寫法。正規表示式中有很多上述的具有特別意義的字元。首先是下列字元。範圍描述符。a z 表示從a到z之間的任意乙個。w 英文本母和數字。即 0 9 a z a z w 非英文本母和數字 s 空字元,...
Ruby 正規表示式
ruby的正規表示式以 作為構造方法。表示式返回乙個regexp的物件。一般規則 a 匹配字元a。匹配特殊字元?特殊字元包括 匹配任意字元,例如 a.匹配ab和ac。ab c 匹配ac和bc,之間代表範圍。例如 a z a za z0 9 a za z0 9 匹配不在該範圍內的字串。d 代表任意數字...
ruby 正規表示式
ruby支援的正規表示式符號 元字元 有這麼個規則 不帶 的數字和字母不是元字元 帶 的符號也不是元字元 下文中出現的 匹配多位元組字元的正規表示式 是指,通過使用 kcode進行設定,或顯式地使用漢字選項 請參考正規表示式字面值 等方式進行的匹配多位元組字元的正規表示式。行首。與字串的頭部或換行符...