プロを目指す人のためのRuby入門・第6章重要ポイントまとめ
「プロを目指す人のためのRuby入門」の第6章を読み終わりました
個人的に重要と判断したポイントをまとめます。
正規表現と文字列の比較
文字列と正規表現を比較するときには=~がよく使われる
#マッチした場合はマッチした文字列の開始位置が返る(つまり真) '123-4567' =~ /\d{3}-\d{4}/ #=> 0 #マッチしない場合はnilが返る(つまり偽) 'hello' =~ /\d{3}-\d{4}/ #=> nil
戻り値から真偽を判定できるため、条件分岐でも使われる
if '123-4567' =~ /\d{3}-\d{4}/ puts 'マッチしました' else puts 'マッチしませんでした' end #=> マッチしました
キャプチャ
正規表現をマッチさせるときに、抜き出したい部分を()で指定して抜き出す機能のこと
text = '私の誕生日は1977年7月17日です' m = /(\d+)年(\d+)月(\d+)日/.match(text) m[0] #=> "1997年7月17日" m[1] #=> "1977" m[2] #=> "7" m[3] #=> "17"
しかし、上記のままだとキャプチャした値を取得するためには何番目が何の値か覚えていなければならない
そこで、キャプチャした値に名前をつけて値を取得しやすくすることができる
text = '私の誕生日は1977年7月17日です' m = /(?<year>\d+)年(?<month>\d+)月(?<day>\d+)日/.match(text) m[:year] #=> "1977" m[:month] #=> "7" m[:day] #=> "17" #文字列での指定もできる m['year'] #=> '1977' 番号での指定もできる m[2] #=> "7"
感想
伊藤淳一さんのQuiitaで学習してから本を読みました。
本に書いてある内容は一通り理解つもりですが、実際にマッチする正規表現を作り出すのはなかなか難しいです…!
推薦されているオライリーの「詳説 正規表現第3版」もかなり分厚い本なので、それだけ内容の濃い分野なんだと思って地道にがんばります。
電話番号がばっちり抜け出したの感動しました。早く使いこなせるようになりたい。
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
- 作者: Jan Goyvaerts,Steven Levithan,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/04/15
- メディア: 大型本
- 購入: 4人 クリック: 197回
- この商品を含むブログ (16件) を見る
Rubular: a Ruby regular expression editor and tester