パターンの記述方法

どのような文字が含まれていればマッチするのかを指定するのがパターンです。正規表現とはこのパターンの記述方法について定義したものとも言えます。パターンの定義は次のように「/」と「/」の間に挟んで指定します。

/パターン/

パターンの中には単純な文字列から様々な特殊な意味を持った記号を記述することが可能です。詳しい解説は別のページで行いますので、ここでは単なる文字列を指定した場合で考えてみます。

例として1文字だけを記述した場合です。

/a/

この場合は対象の文字列に「a」が含まれていればマッチします。文字列の中のどの位置にあるのかは関係ありません。またパターンでは大文字と小文字は区別されますので「A」が含まれていてもマッチしません。

よって次のような文字列の場合にマッチします。

abc
This is a pen
yahoo

これらの文字列の中には「a」が含まれていますので、3つの文字列はいずれもマッチしています。

次にパターンに複数の文字をを記述した場合です。

/abc/

この場合は対象の文字列に「abc」が含まれていればマッチします。「a」「b」「c」の3つの文字が含まれていればという意味ではなく、「abc」と言う3つの文字が連続している文字列が含まれている場合にマッチします。

よって次のような文字列の場合にマッチします。

abc
toabcdepplo
oojkiabc

今回は単に文字や文字列が含まれているかどうかだけのパターンでしたが、複数の候補のいずれかが含まれているかどうかを調べたり、指定の文字が任意の回数繰り返されているかどうかなどを調べたりするパターンを作成する事も出来ます。

サンプルプログラム

では簡単なプログラムで確認して見ます。

sample3-1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>PHP正規表現</title>
</head>
<body>

<p>

<?php
$pattern = '/ok/';
print('パターン '.$pattern.' にマッチするかどうか<br />');

$str = 'Osaka';

if (preg_match($pattern, $str)){
  print('○:');
}else{
  print('×:');
}
print($str.'<br />');

$str = 'Tokyo';

if (preg_match($pattern, $str)){
  print('○:');
}else{
  print('×:');
}
print($str.'<br />');
?>

</p>

</body>
</html>

上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

パターンの記述方法