正規表現に入門してみる
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
プロを目指す人のためのRuby入門の続きをやっていきます。 今回は正規表現です。正直今まで正規表現はやったことがなかったので、本当に入門からやっていきます。
基本的な正規表現
そもそも正規表現ってなんだっていうところなんですけど、本から拝借すると下記のようになります。
パターンを指定して、文字列を効率よく検索 / 置換するためのミニ言語
どうやら、Rubyだけでなく他の言語でも使えるそうです。 基本的な正規表現は下記の記事から学べます。
数字や文字を表す
数字や文字を表す正規表現でよく使われるのは、下記になりそうです。
\d #=> 数字 . #=> 任意の一文字 \w #=> [a-z0-9_]と同意
空間やスペースを表す
以下の正規表現が表現に拡張性を持たせます。
[ ] #=> いずれか1文字を表す文字クラスを作る [^ ] #=> ~以外の任意の1文字を表す文字クラスを作る ? #=> 直前の文字やパターンが1回、もしくは0回現れる * #=> 直前の文字のパターンが0回以上連続する
マッチングや置き換え
Rubyのプログラムでよく使われるマッチングを行い、置き換えるには主に下記の二つを利用します。
( ) #=> 条件該当場所をマッチ gsub #=> gsub(a,b)でaをbに置き換える
Rubyの正規表現
/正規表現/
また記号の=~を利用することで左右のtrueとfalseを確かめることができます。 また、matchメソッドで特定のマッチした場所を利用できます。
text = '私の誕生日は1997年1月17日です。' m = /(\d+)年(\d+)月(\d+)日/.match(text) m[1] #=> 1997
また、scanメソッドはマッチした場所を配列に入れて返してくれます。
'123 456 789'.scan(/\d+/) #=> ["123","456","789"]
少し慣れが必要そうな正規表現ですが、文字置換などあらゆる作業を効率化できそうです。