Railsの開発の中で、頻度は少ないですがたまに正規表現を利用することがあります。

そういうこともあって、いざ正規表現を用いてコードを書く際に記述方法が思い出せないことが多々あるので開発の効率が悪いことがあったりしますね。

なので、Rubyの正規表現に関する内容を備忘録としてまとめておきたいと思います。

正規表現とは

文字列のパターンを一つの文字列で表現するための表記法です。

正規表現のメリットとしては「一つの文字列で表現」という部分がポイントで、正規表現特有のメタ文字というものを活用することで色んなパターンの文字列を表現することができます。

例えば、以下のような複数の文字列があったとし、郵便番号の表示形式のものだけを取り出したいとします。

23-85412
857-9521 <- これ
198631-7
294-3391 <- これ
9083544-
5459-684

その場合、以下の正規表現を利用すれば取り出す事ができます。

正規表現
[0-9]{3}-[0-9]{4}
または
\d{3}-\d{4}

結果
857-9521
294-3391

「\d」は0〜9の数字の範囲に関する部分を省略して記述できる省略コードとなります。

正規表現を利用する場面は、このように特定の文字列を抽出したりする際などに利用する事が良くあります。

メタ文字一覧

正規表現で使用できるメタ文字は、一部ではありますが以下の通りとなります。

メタ文字説明備考
^行頭
$行末
[]OR[abc] : ‘abc’
[^abc] : ‘abc’以外
[0-9] : 0~9
{n,m}n回以上、m回以下{0,3} : 0回以上、3回以下
{,2} : 2回以下
{5,} : 5回以上
{3} : 3回
.ワイルドカード(1文字)
メタ文字一覧

メタ文字をエスケープさせたい

メタ文字をエスケープさせたい場合は、「\」を文字の先頭に追記します。

正規表現
abc\$def\]

結果
abc$def]

Rubyの正規表現

Rubyで正規表現を扱う場合はRegexpクラス(Regular Expression)を利用します。

Regexpオブジェクトを生成する場合は以下のように文字列を「/」で囲みます。

/あいうえお/

先ほどの例のように、郵便番号の文字列パターンを表現する正規表現を用いる場合は以下のように定義します。

/\d{3}-\d{4}/

特に難しいものはありませんね。

正規表現の表記方法は、言語によって多少の違い(方言)があるので注意してください。

更新日 : 2020年8月15日

投稿者: TWEI

趣味はプログラミング。 以前は仕事でプログラミングをやっていました。現在はWebエンジニアを目指して勉強中。 勉強で得た知識などをブログで発信していく予定です。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA