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日"]
たまに使うケースもあると思うので頭の片隅においておくといいですね。
何か参考になれば幸いです(*^^*)