正規表現は「パターン発見くん」
「正規表現」という表現がもはやとっつきにくそうなオーラを出しているが、ようは文字列とマッチングをする「パターン」の書き方のこと。最初はわかりにくいので「パターン発見くん」みたいな感じでとらえるといい。
たとえば、
- 文字列からRで始まる文字を見つけたい
- 文字列からRで始まってyで終わる、4文字の文字列を見つけたい
- 文字列から数字だけを見つけたい
- 文字列をsplitメソッドで「空白、タブ、改行で文字列を区切って配列に入れたい」
などなど、「文字列の中からこんな文字を見つけ出したい」てなときに使える便利なもの。Rubyに限らず他のプログラミング言語でも使える。
英語ではRegular Expressionと呼ぶ。これもわかりにくいな…
正規表現を使う
//
の中に書く
正規表現を使うには、作ったパターンを「//」の中に書く。
/パターン/
たとえば、splitメソッドで「空白、タブ、改行で文字列を区切って配列に入れたい」場合はこう書ける。
str = "blue 青 white 白\nred 赤" str.split(/\s+/) => ["blue", "青", "white", "白", "red", "赤"]
/\s+/
にあたるのが正規表現となる。
正規表現クラスのメソッドを使う
もしくは、正規表現クラスRegexp
のメソッドを使い、正規表現オブジェクトを作る方法もある。
re = Regexp.new("Python") => /Python/
/Python/
という正規表現オブジェクトが作られた。
これがどんなふうに使えるのか。
re = Regexp.new("Python") if re =~ "Python" p "matched" end => "matched"
正規表現 =~ 文字列
で、マッチするかどうか調べることができる。なお、正規表現と文字列の位置が反対でも動作する。