対象: 正規表現正規表現リテラル/で囲まれた文字列は正規表現として解釈される。閉じ/の後にi(大文字小文字の区別を行わない)等のオプションを指定することもできる。
(正規表現の例) /^abc/ =~ s # 行頭の"abc"にマッチ /^JRuby/ !~ s # 行頭が"JRuby"でない(マッチしなかった場合にtrue) /^ruby/i =~ s # 行頭の"ruby"に大文字小文字関係なくマッチ /\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}[.]\d{3}/ =~ s # "2010/02/21 10:10:59.789"等日時にマッチ /.*[.]txt$/ =~ s # 行末の".txt"にマッチ(ピリオドは[.]) 正規表現記号
文字クラス指定
繰り返しの指定
更に高度な正規表現を記述するために、これ以外の記号も用意されている。 その他便利な機能その他にもまだまだ便利な機能がある。例えば、 ~ /abc/ は/abc/ =~ $_の略記法であり、ファイルを読み込んで中身を調べるときには重宝する。 open("test.log", "r") do |io| while io.gets print $_ if ~ /ruby/ # 読み込んだ行に"ruby"が含まれれば出力 end end 正規表現によるマッチと部分文字列の取出しを1行で書くことができる。以下のコードを見ていただきたい。if文で文字列を年/月/日の形式にマッチさせるとともに、()内にマッチした部分文字列を$1、$2、及び$3として取り出すことができる。因みにマッチした文字列全体は$&で取り出すことができる。 if /^(\d{4})\/(\d{2})\/(\d{2}).*/ =~ "2010/12/21 22:22:59" print "year: #{$1}\n" # 最初の括弧にマッチした文字列 print "month: #{$2}\n" # 2番目の括弧にマッチした文字列 print "day: #{$3}\n" # 3番目の括弧にマッチした文字列 end (2010/02/21)
Copyright(C) 2004-2014 モバイル開発系(K) All rights reserved.
[Home]
|