1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

0からのRuby入門その5〜パターンを正規表現で表す〜

Pocket

はじめに

正規表現をご存じですか?

前回は、文字列の基本的な扱い方について学びました。
もう少し応用的な機能に踏み込んでみましょう。
それが「正規表現」です。

プログラミングでは、ときには長い文字列から特定のパターンを探す処理が必要なこともあります。
たとえば、HTMLからメールアドレスのみを抜き出すなどです。そんなときは、正規表現が非常に役に立ちます。

この記事では、Ruby初心者の方向けに、正規表現の基本とRubyでの扱い方についてお伝えしていきます。

正規表現とはなにか?

正規表現とは、特殊な文字列を使って「文字列のパターン」を表現する方法です。
特定の固定文字列ではなく、特定のパターンに一致する汎用的な表現を定義できます。

たとえば、すべてのメールアドレスに一致する正規表現などが定義可能です。

文字列が短い場合やフォーマットが決まっている文字列の場合は正規表現を使わなくても処理できるかもしれませんが、HTMLなどの非整形文書から特定の文字列を抜き出すなどする場合には正規表現を使わなければ難しいでしょう。

正規表現で文字を表す

それでは、基本的な正規表現文字を学んでいきましょう。

まずは、最も単純な「.(ドット)」からです。
ドットは、正規表現では1文字を表します。つまり、3文字の文字列を正規表現で定義するには”…”とします。この正規表現は、”aaa”や”abc”、”@01”など、3文字の文字列ならなんにでもマッチ(一致)します。
また、正規表現ではドットのような特殊文字以外は通常の文字として扱われます。
このため、固定文字列を指定することも可能です。

たとえば、何の変哲もない”abc”などの文字列も立派な正規表現として成り立ちます。とはいっても、”abc”は”abc”以外とはマッチしないため、あまり意味はないでしょう。
通常は”a.c”などというふうに、特殊文字と組み合わせて使います。これなら、”abc”や”a2c”、”a@c”などの文字列とマッチします。

また、文字クラスというものもあり、複数の文字を簡単に表すことができます。
たとえば、”[a-z]”はaからzまでのすべてのアルファベットを表します。

デフォルトでは、大文字と小文字を区別することに注意して下さい。
数字の場合は、”[0-9]”とします。

正規表現にマッチする文字列を探す

それでは、ここまで学んだ正規表現をRubyで使ってみましょう。
Rubyには、正規表現にマッチする文字列を取得するための「scanメソッド」が用意されています。

次の例をみて下さい。

例:

 

この例では、”田”から始まる名前を抽出しています。
”/”で囲まれている部分は、正規表現リテラルとなります。”scanメソッド”の返り値は配列になっているのですが、ここではそのまま出力しています。

配列については、次回の連載で詳しく説明します。

次に、文字の繰り返し表現についてみていきましょう。

正規表現で繰り返しを表す

基本的な繰り返し表現は3つあります。

まずは、「*(アスタリスク)」です。
アスタリスクは、0回以上の繰り返しを表します。単体では使えず、上で説明した文字指定と組み合わせる必要があります。たとえば、”ab*”は”a”や”ab”、”abb”などとマッチします。

対して、「+(プラス)」は1回以上の繰り返しを表します。
このため、”ab+”という正規表現は”ab”にはマッチせず、”ab”や”abb”などとマッチします。

また、「?(ハテナ)」は0回もしくは1回の繰り返しを表します。
たとえば、”a.?c”は”abc”や”a2c”、”ac”などとマッチします。

それでは、ここまで学んだ正規表現で、簡易的なメールアドレスの抽出をしてみましょう。

例:

 

うまくメールアドレスだけ抽出できましたね。
特殊文字であるドットは、”\”でエスケープしてやる必要があることに注意して下さい。
正規表現は奥が深いので、じっくり学んでみましょう。

まとめ

正規表現はうまく書けましたか?

意図した文字列に的確にマッチする正規表現を書くのは、なかなか難しい作業です。
まずは簡単な正規表現から始めて、どのようにマッチするか確かめながらパターンを成長させていくとよいでしょう。

オンラインの正規表現マッチツールなども役に立つので、活用してみましょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る