山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

プロを目指す人のためのRuby入門 その7

第6章 正規表現を理解する

Ruby の環境を Vagrant を使って Ubuntu に移しました。N予備校のおかげですね。

正規表現についてはこれを読むという話です。

qiita.com

Rubular

記事で紹介されている Rubular を使って視覚的に正規表現を体験できます。

https://rubular.com/

正規表現オブジェクト

"/正規表現/ "で正規表現オブジェクトを作ります。"=~" で文字列が一致した位置を返します。"!~" でマッチしなかったときに、true、したときに false を返します。

regrex = /d{3}-\d{4}/  # 数字3つとハイフンと数字4つ
'123-4567' =~ regrex  # 0
'ffff' =~ regrex     # nil
'apple000-1111' =~ regrex  # 5
'grape' !~ regrex # false

文字列をキャプチャするには、正規表現と match() メソッドを使います。

text = '私の誕生日は1999年3月3日です。'
regex = /(\d+)(\d+)(\d+)/
m = regex.match(text) #m[0] = 1999年3月3日, m[1] = 1999, m[2] = 3, m[3] = 3

キャプチャの結果に名前をつけると、シンボルで値を取りだすことができます。

text = '私の誕生日は1999年3月3日です。'
regex = /(?<year>\d+)(?<month>\d+)(?<day>\d+)/
m = regex.match(text)
m[:year] # 1999
m[:month] # 3
m[:day] # 3

感想

久しぶりに Ruby を触りました。正規表現は他の言語でも使うので覚えていきたいですね。