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+)時/) # => マッチなし
何か参考になると幸いです(*^^*)