Rubyリファレンス: Home

match (String)

Edit   History

標準クラス・モジュール > String > match

str.match(pattern)

matchメソッドは、引数の正規表現とのパターンマッチを行います。マッチしたときはMatchDataオブジェクトを返し、マッチしなかったときはnilを返します。引数が文字列の場合は、正規表現に変換してパターンマッチを行います。

matchメソッドの動作は、patternをレシーバ、strを引数にしてRegexpクラスのmatchメソッドを呼び出すのと同じです。つまり、pattern.match(str)と同じ結果になります。

次の例は、MatchDataオブジェクトを変数mdに取り出し、マッチした部分md[0]( )に記録した部分md[1]を表示しています。

s = "<hello> <world>"
if md = s.match(/<(\w+)>/)
  puts md[0]
  puts md[1]
end
<hello>
hello
str.match(pattern) {|matchdata| block }

Ruby 1.9 Ruby 1.9では、matchメソッドにブロックを渡すことができます。マッチしたときはブロックを実行し、ブロック引数にMatchDataオブジェクトを入れます。マッチしないときはブロックを実行しません。

上記の例は次のように書いても同じ結果になります。

s = "<hello> <world>"
s.match(/<(\w+)>/) do |md|
  puts md[0]
  puts md[1]
end
<hello>
hello

関連項目