Ruby 正規表現 scanを使って文字列を取得する方法

Rubyのscanと正規表現を使って文字列を取得する方法をご紹介いたします。

シンプルに文字列取得

単純な数字を取得する方法です。

text = '123 456 789'
p text.scan(/\d+/) # => ["123", "456", "789"]

scanの取得方法いろいろ

配列の中に配列で取得

正規表現にカッコ()を付けると配列の中に配列が入り取得できます。

text = '2018年1月1日 2018年2月2日 2018年3月3日'

p text.scan(/(\d+)年(\d+)月(\d+)日/)
# => [["2018", "1", "1"], ["2018", "2", "2"], ["2018", "3", "3"]]

試しに上記の最後だけカッコ()を外してみる。

text = '2018年1月1日 2018年2月2日 2018年3月3日'

p text.scan(/(\d+)年(\d+)月\d+日/)
# => [["2018", "1"], ["2018", "2"], ["2018", "3"]]

最後だけ取れない。という結果に。

XXXX年XX月XX日 の文字列を配列で取得

XXXX年XX月XX日の文字列を配列で取得してみる。

text = '2018年1月1日 2018年2月2日 2018年3月3日'

p text.scan(/\d+年\d+月\d+日/)
# => ["2018年1月1日", "2018年2月2日", "2018年3月3日"]

 

たまに使うケースもあると思うので頭の片隅においておくといいですね。

 

何か参考になれば幸いです(*^^*)