QUOIT Blog

正規表現を勉強しよう

この記事は8年以上前の記事です。情報が古い場合がありますのでお気を付け下さい。

タイトルは正直、自分に言っているわけですがw

例によって自分の解釈で表記していきます。
間違っている、ここおかしいじゃねえか、などありましたらコメント欄にてツッコミください。

<正規表現とは>
正規表現を簡単に説明すると、「ある文字列を探し出す条件を表す文字列(パターン)」です。

特殊な書き方をしますので、プログラミングを始めたばかりの方にはとっつきにくいイメージがあると思います。
(実際自分がそうでしたw)

ただ、この正規表現を使いこなすことができると、プログラムを作る上で絶大な効果を発揮します。

PHPでのとても簡単な一例を。

【メールアドレスで「@」以降のドメイン部分を取得する】
$mail_address = “yakumo@quoit.jp”;
if($parts = preg_replace(“/.*@/i”,””,$mail_address)){
echo $parts;
}

《出力結果》
quoit.jp

ドメイン名部分だけが表示されました。
今回はperl互換の正規表現が使える「preg_replace」関数を使いました。
この関数で、元の文字列から「@」以前を取り除くという置き換えを行なっています。

このコードでのミソは「”/.*@/i”」という正規表現の条件です。

「/」で囲むことで、ここからここまでが条件文だよ、という意味です。(他の文字に置き換えることが可能)
「.」は「何でも良い一文字」を表します。
「*」は「直前の文字が複数続きますよ」を表します。
最後にくっついている「i」は正規表現のオプションで、「大文字小文字を区別しなくていいよ」という意味です。

つまり、「何でも良い文字の連続」があって、その後に「@」が来てたら、条件に合致するよ、という正規表現です。

「.」や「*」は「メタ文字」と呼ばれ、正規表現の中で特別な意味を持つ文字です。

この「メタ文字」は他にもいろいろあり、組み合わせることで高度な条件を作ることができます。

初めての方はこちらのページでどんなメタ文字/オプションがあるのか見ておくと良いです。

サルにもわかる正規表現入門
PHP 正規表現の基本 (preg_match) – どうにかなるBLOG

基本的なことは上記ページで学んでおきましょう。

また、正規表現のサンプル集がWEB上にたくさんありますので、そのサンプルを見て勉強するのも良いと思います。

PHP&正規表現

よし、腰据えてやってみよう!と思ったらこちらを是非。
英語ですが、頑張る価値はある!(と思う)

Regular-Expressions.info – Regex Tutorial, Examples and Reference – Regexp Patterns

正規表現は難しいですが、プログラミングをするなら必ず学ぶ必要が出てくるはず。
頑張って覚えていきましょう。
(主に僕がw)



<おまけ:注意>
また、有名な話しですが、メールアドレスを合致させる正規表現について、半年ほど前に一悶着ありました。
404 Blog Not Found:「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ
騒動の顛末はともかく、メールアドレスについては正規表現で表すのが困難だよ、というお話です。

2 comments for “正規表現を勉強しよう

  1. HOGE-CHON
    2009年11月17日 at 2:14 PM

    「欲張りな/欲張りでない量指定子」も押さえておくことをおすすめします。
    レベルアップしたら「アサーション」でしょうか。
    これ以上は正規表現オタク(!?)の世界ですね?(主観)。
    とりあえず、良質サイトを見つけるためのキーワード紹介でした。

  2. yakumo
    2009年11月17日 at 2:44 PM

    HOGE-CHONさん
    ありがとうございます!
    頂いたキーワードで検索するといろいろ出てきますねぇ。。
    僕も次の段階として勉強してみます!