Ruby筆記 正規表示式

2021-06-09 03:23:07 字數 1150 閱讀 4720

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進行設定,或顯式地使用漢字選項 請參考正規表示式字面值 等方式進行的匹配多位元組字元的正規表示式。行首。與字串的頭部或換行符...