正規表現を勉強しよう
タイトルは正直、自分に言っているわけですがw
例によって自分の解釈で表記していきます。
間違っている、ここおかしいじゃねえか、などありましたらコメント欄にてツッコミください。
<正規表現とは>
正規表現を簡単に説明すると、「ある文字列を探し出す条件を表す文字列(パターン)」です。
特殊な書き方をしますので、プログラミングを始めたばかりの方にはとっつきにくいイメージがあると思います。
(実際自分がそうでしたw)
ただ、この正規表現を使いこなすことができると、プログラムを作る上で絶大な効果を発揮します。
PHPでのとても簡単な一例を。
【メールアドレスで「@」以降のドメイン部分を取得する】
$mail_address = “yakumo@quoit.jp”;
if($parts = preg_replace(“/.*@/i”,””,$mail_address)){
echo $parts;
}《出力結果》
quoit.jp
ドメイン名部分だけが表示されました。
今回はperl互換の正規表現が使える「preg_replace」関数を使いました。
この関数で、元の文字列から「@」以前を取り除くという置き換えを行なっています。
このコードでのミソは「”/.*@/i”」という正規表現の条件です。
「/」で囲むことで、ここからここまでが条件文だよ、という意味です。(他の文字に置き換えることが可能)
「.」は「何でも良い一文字」を表します。
「*」は「直前の文字が複数続きますよ」を表します。
最後にくっついている「i」は正規表現のオプションで、「大文字小文字を区別しなくていいよ」という意味です。
つまり、「何でも良い文字の連続」があって、その後に「@」が来てたら、条件に合致するよ、という正規表現です。
「.」や「*」は「メタ文字」と呼ばれ、正規表現の中で特別な意味を持つ文字です。
この「メタ文字」は他にもいろいろあり、組み合わせることで高度な条件を作ることができます。
初めての方はこちらのページでどんなメタ文字/オプションがあるのか見ておくと良いです。
基本的なことは上記ページで学んでおきましょう。
また、正規表現のサンプル集がWEB上にたくさんありますので、そのサンプルを見て勉強するのも良いと思います。
よし、腰据えてやってみよう!と思ったらこちらを是非。
英語ですが、頑張る価値はある!(と思う)
Regular-Expressions.info – Regex Tutorial, Examples and Reference – Regexp Patterns
正規表現は難しいですが、プログラミングをするなら必ず学ぶ必要が出てくるはず。
頑張って覚えていきましょう。
(主に僕がw)
<おまけ:注意>
また、有名な話しですが、メールアドレスを合致させる正規表現について、半年ほど前に一悶着ありました。
404 Blog Not Found:「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ
騒動の顛末はともかく、メールアドレスについては正規表現で表すのが困難だよ、というお話です。
“正規表現を勉強しよう” に対して2件のコメントがあります。
コメントは受け付けていません。
「欲張りな/欲張りでない量指定子」も押さえておくことをおすすめします。
レベルアップしたら「アサーション」でしょうか。
これ以上は正規表現オタク(!?)の世界ですね?(主観)。
とりあえず、良質サイトを見つけるためのキーワード紹介でした。
HOGE-CHONさん
ありがとうございます!
頂いたキーワードで検索するといろいろ出てきますねぇ。。
僕も次の段階として勉強してみます!