Rubyでマッチする文字列を取得して処理をしてみよう!

Rubyでマッチする文字列を取得して処理をしてみよう!

ポイントは以下になります。

  • ()を使って抜き出したい部分を指定します。
  • matchを使って取得配列として取得する。
  • matchした場合は配列が返り、matchしなかった場合はnilが返る

使ってみた例が以下の通りです。

text = '次は、8月12日の13時に集合ね!'
p params1 = /(\d+)月(\d+)日.(\d+)時/.match(text)
# => #<MatchData "8月12日の13時" 1:"8" 2:"12" 3:"3">
p params1[0] # => 8月12日の13時
p params1[1] # => 8
p params1[2] # => 12
p params1[3] # => 13

p /(\d+)月(\d+)日.*(\d+)時/.match('good!')
# => nil

 

メソッド化するととても便利そうですね(*^^*)

例は以下の通りです。

testメソッドに、文字列paramと、正規表現regexpに渡しています。

def test(param, regexp)
  if result = regexp.match(param)
    p result[1] + '月は厳しいなぁ'
  else
    p 'マッチなし'
  end
end

test('次は、8月12日の13時に集合ね!', /(\d+)月(\d+)日.(\d+)時/)
# => 8月は厳しいなぁ
test('good job!', /(\d+)月(\d+)日.(\d+)時/)
# => マッチなし

何か参考になると幸いです(*^^*)