Ext JSやRapid Driveなど
システム開発の技術情報をご紹介。

お問い合わせ 資料請求 無料見積り

お電話でお気軽にお問い合わせくださいTel 03-6805-2904 営業時間 [平日]AM 9:30 - PM 6:30

パターンマッチング

パターンマッチングについて

文字列マッチング

正規表現による文字列のマッチング

正規表現は記号を使用し、文字列の範囲を指定して、パターンが一致するものを検索します。

ereg()関数は、記号の「^」や「$」を使用し、文字列のパターンを指定します。

文字列の一部分をマッチ
<?php
    $str1 = "Start is a day";
    $str2 = "Please teach ending of your schedule";

    if(ereg("^Start",$str1)) echo "Startから始まる文字列です。<br />n";

    if(ereg("schedule$",$str2)) echo "scheduleで終わる文字列です。<br />n";
?>
実行結果
Startから始まる文字列です。
scheduleで終わる文字列です。

上記のスクリプトでは、「if(ereg("^Start",$str1))」の「^」は先頭を意味し、「Start」から始まる文字列に一致します。すなわち、文字列の先頭に「Start」が存在した場合、echoの「Startから始まる文字列です。」が出力されます。

if(ereg("schedule$",$str2))の「$」は末尾を表し「schedule」で終わる文字列に一致します。すなわち、文字列の末尾に「schedule」が存在した場合、echoの「scheduleで終わる文字列です。」が出力されます。

一連の文字列とのマッチング

1~9、a~zなどの文字列と一致するものを検索することができます。

アルファベットの文字列、数字の文字列と一致
<?php
    $str1 = "PHP Product";
    $str2 = "12349-5826-31322";

    if(ereg("[a-z]",$str1)) echo "$str1はaからzまでの小文字を含みます。<br />n";

    if(ereg("[0-9]-",$str2)) echo "$str2は0~9までの数字とハイフンを含みます。<br />n";
?>
実行結果
$str1はaからzまでの小文字を含みます。
$str2は0~9までの数字とハイフンを含みます。

上記のスクリプトでは変数$str1はif(ereg("[a-z]",$str1))の、「[](角かっこ)」によりアルファベット文字列の範囲を指定しています。この場合は[a-z]としているので、「a~z」までがマッチする範囲となります。すなわち変数$str1に、一個でも小文字のアルファベットが存在している場合、echoの「$str1はaからzまでの小文字を含みます。」が出力されます。

$str2 はif(ereg("[0-9]-",$str2))の「[](かっこ)」と「-(ハイフン)」により文字列の範囲を指定しています。この場合は「0~9」と「-」がマッチする範囲となります。すなわち、変数$str2に「0~9」のいずれかの数字と「-」が存在した場合、echoの「$str2 は0~9までの数字とハイフンを含みます。」が出力されます。

文字の出現回数でのマッチング

文字列の中で、繰り返し使用される文字と一致させるためには、「{}(中かっこ)」によって出現回数を指定します。

アルファベットの文字列、数字の文字列と一致
<?php
    $str = "ABCDEFG123HIJK";

    if(ereg("[0-9]{3}",$str))
    echo "$strは0から9までの数字を3つ含む文字列です。<br />n";
?>
実行結果
$strは0から9までの数字を3つ含む文字列です。

上記のスクリプトでは、「if(ereg("[0-9]{3}",$str))」の{3}により文字列の中で、繰り返し使用される回数を「3回」と指定しています。すなわち、変数$strに3つ以上「0~9」の数字が存在した場合、echoの「$strは0から9までの数字を3つ含む文字列です。」が出力されます。

文字の出現を回数ではなく範囲で指定する場合は、「,(カンマ)」で区切り指定します。

範囲による指定
<?php
   $str = "ABCDEFG123HIJK2589LMN";

   if(ereg("[0-9]{1,10}",$str))
   echo "$strは0から9までの数字を1個から10個含む文字列です。<br />n";
?>
実行結果
$strは0から9までの数字を1個から10個含む文字列です。

上記のスクリプトでは、if(ereg("[0-9]{1,10}",$str))の{1,10}によって出現回数を範囲で指定しています。