Make the Most of IT.

お酒と映画が好きなJava屋さんがRubyとか学んだこと感じたことをつらつらと

Ruby勉強します! #なんて便利な正規表現編

はじめに

みなさん、こんにちは。

最近は本当に冬なのかってくらいの暖かさ、と言うか暑いですね。ヒートテックに切り替えて久しいですがヒートテックを一度タンスにしまい直そうかと思うくらいです。

でも週末から今度は1月末並みの気温になるそうなので、気温のジェットコースターに頑張って耐えたいと思います。

さて、今回は正規表現です!

正規表現自体はマスターすればかなり強力な武器になるとは思いつつも、あの呪文のような式に怖気付いちゃってました。

しかし、わかりやすい解説と例題のおかげですっかりその苦手意識もなくなり、今では実務でもかなり役に立っています!

参考にさせていただいたのは毎度おなじみ、伊藤淳一さん(@jnchito)の「プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発デバッグ技法まで 」です。

またチェリー本内でも紹介されていましたが、下記Qiita記事も参考とさせていただきました。

初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」 - Qiita
初心者歓迎!手と目で覚える正規表現入門・その2「微妙な違いを許容しつつ置換しよう」 - Qiita
初心者歓迎!手と目で覚える正規表現入門・その3「空白文字を自由自在に操ろう」 - Qiita
初心者歓迎!手と目で覚える正規表現入門・その4(最終回)「中級者テクニックをマスターしよう」 - Qiita

文字を指定する

文字を指定する場合は、下記の記号を用います。

記号 意味
. 任意の一文字
* 直前の文字の0回以上の繰り返し
+ 直前の文字の1回以上の繰り返し
¥d 数字1文字
¥w アルファベット、数字、アンダースコア (_) のどれか1文字
¥s 半角スペース、タブ、改行のどれか1文字
¥n 改行
¥t タブ

Ruby正規表現を扱う

RubyではStringクラスに正規表現を扱うための便利メソッドが用意されています。

scan

scanメソッドは引数で指定した正規表現にマッチした部分を配列に格納して返却します。

'123 456 789'.scan(/\d+/)
  #=>["123", "456", "789"]

gsub

gsubメソッドは第1引数に指定した正規表現にマッチした文字列を、第2引数の文字列で置換します。

text = "文 字 の 隙 間 を 埋 め ま す"

text.gsub('¥s', '-')
  #=> "文-字-の-隙-間-を-埋-め-ま-す"

さいごに

ということで、これまでなかなか手をつけることができなかった正規表現について学びました。

やはり正規表現は身につけると強力な武器になりますね!
普段の業務でもかなり威力を発揮してくれています。

次の章はいよいよクラスについて学びます!