Regexpクラス
オプション
i / Regexp:IGNORECASE : 大文字小文字を無視 m / Regexp::MULTILINE : 「.」で改行とマッチ x / Regexp::EXTENDED : 空白や#から始まるコマンドを無視
例
a = /abcdefg/i a = Regexp.new("abcdefg", Regexp::MULTILINE | Regexp::IGNORECASE) => /abcdefg/mi
Match
a = Regexp.new("abc") a.match("abcdefg") => #<MatchData "abc"> a =~ "abcdefg" # 0 a === "abcdefg" #true
マッチさせたい文字の位置
行頭(^) 行末($) 文字の行頭(\A) 文字の行末(\Z,\z) Zは改行文字があってもマッチする
escape : .や[]などの文字をエスケープする
Regexp.escape("array.push(hsah[key])") => "array\\.push\\(hsah\\[key\\]\\)"
last_match : マッチした結果を取得
/abcdefg/ =~ "abcdefghijklmnopqrstuvwxyz" => 0 Regexp.last_match => #<MatchData "abcdefg"> $~ => #<MatchData "abcdefg"> #引数有り /(abc)d(efg)/ =~ "abcdefghijklmnopqrstuvwxyz" =>0 Regexp.last_match(0) => "abcdefg" $& => "abcdefg" Regexp.last_match(1) => "abc" Regexp.last_match(2) => "efg" $2 => "efg"
union : 論理和
a = Regexp.new("abc") b = Regexp.new("ABC") c = Regexp.union(a,b) => /(?-mix:abc)|(?-mix:ABC)/ c =~ "abc" =>0
オプションや属性
options : Regexp::EXTENDED, IGNORECASE, MULTILINEの論理和 casefold? : Regexp::IGNORECASEが設定されたかを返す kcode : コンパイルされている文字コード source : 世紀表現の元となった文字列表現
例
a = Regexp.new("abcdefg", Regexp::MULTILINE | Regexp::IGNORECASE) a.options => 5 a = Regexp.new("abcdefg", nil, "u") a.kcode => "utf8" a.source => "abcdefg"
その他、記号
/./ : 任意の一文字 /\w/ : a〜z /\d/ : 0〜9 /\s/ : 空白文字
繰り返し
/*/ : 前の文字列が0回以上の繰り返し /+/ : 前の文字列が1回以上の繰り返し /?/ : 前の文字列が0回、または1回の繰り返し