アプリケーション
正規表現(regular expression)とは、文字列の集合を一つの文字列で表現するための表記法です。 PHPは、Perl互換正規表現とPOSIX拡張正規表現をサポートしてます。 当HPではPOSIX拡張正規表現の説明をします。
正規表現で定めたパターンと検索対象文字列が一致することをマッチングといいます。
先頭のマッチング 「 ^ 」
対象文字列: php script
マッチング: ^php
アンマッチ: ^hp
末尾のマッチング 「 $ 」
対象文字列: php script
マッチング: script$
アンマッチ: scri$
複数文字から1文字のマッチング 「 [ABC] 」
[ABC] → 「ABCのうちどれか1文字」
同種類の文字から1文字のマッチング 「 [A-Z] 」
[A-Z] | → | 「大文字AからZのうちどれか1文字」 |
[a-z] | → | 「小文字aからzのうちどれか1文字」 |
[0-9] | → | 「数字のうちどれか1文字」 |
[A-Zj] | → | 「大文字AからZとjのうちどれか1文字」 |
[a-c0-3] | → | 「aからc、0から3のうちどれか1文字」 |
否定表現 []内の「 ^ 」
[^A-Za-z] → 「アルファベット以外の1文字」
[^A-Zabc] → 「大文字アルファベットとa、b、c以外の1文字」
任意の1文字「 . 」
対象文字列: abcdefg
^a.....g$ : マッチング
繰り返し表現
* | → | 「0回以上」 |
+ | → | 「1回以上」 |
? | → | 「0回か1回」 |
{n} | → | 「n回」 |
{n,} | → | 「n回以上」 |
{n,m} | → | 「n〜m回以上」 |
PHPではマッチングに ereg 関数を利用します。
int ereg ( 正規表現パターン , 文字列 [, 結果 ] )
文字列を正規表現パターンによりマッチし、 マッチした場合はマッチした文字列の長さを返し、 マッチしなかった場合は FALSE を返します。 結果にはマッチした文字列を格納する配列を指定します。 配列の0番目にはマッチした要素全体のコピーを保持し、 配列の1番目からは正規表現内の括弧で囲まれた部分でマッチしたものが、 順に格納されます。
以下にereg関数の使用例を示します。
正規表現パターンは小文字のアルファベット6文字です。
文字列が正規表現パターンにマッチングした場合、
その結果を出力しています。
また、大文字・小文字の区別を行わない eregi 関数があります。
<html> <head><title></title></head> <body> <?php $moji = "test script"; if(ereg("[a-z]{6}", $moji, $result)){ print_r($result); } ?> </body> </html>
実行結果: Array ( [0] => script )
ereg関数の他に、 正規表現による置換を行うereg_replace関数や、分割を行うsplit関数があります。