正規表現の利用方法

まず最初に正規表現がどのような時に利用されるのかを確認しておきます。

例えば変数に格納された文字列が、ある文字列と一致するかどうかを調べるには次のように記述しました。

$var = 'Hello';

if ($var == 'Hello'){
  print('文字列はHelloです<br />');
}else{
  print('文字列はHelloではありません<br />');
}

このサンプルでは変数に格納された文字列と「Hello」と言う文字列が完全に一致しますので「文字列はHelloです」が出力されます。

それでは変数に格納された値に「He」と言う文字が含まれているかどうかを調べるにはどうすればいいでしょうか。先ほどと同じように記述してみます。

$var = 'Hello';

if ($var == 'He'){
  print('文字列はHeを含みます<br />');
}else{
  print('文字列はHeを含みません<br />');
}

今度のサンプルでは「文字列はHeを含みません」が出力されてしまいます。これは「==」演算子は左辺と右辺が一致している場合にだけ真となり一部の文字が含まれていても完全には一致していない場合には偽となるためです。

このように文字列の中に指定した文字が含まれているかどうかを調べる時に正規表現を使います。詳しい記述方法は次のページ以降に確認して行きますが、正規表現を使うことで次のように記述することが出来ます。

$var = 'Hello';

if (preg_match('/He/', $var)){
  print('文字列はHeを含みます<br />');
}else{
  print('文字列はHeを含みません<br />');
}

ここで「/He/」と書かれた部分が正規表現での記述となっています。「preg_match」関数はパターン引数である「/He/」と対象である文字列を引数にとり、パターン引数で指定した正規表現を使って文字列内を検索しマッチするかどうかを調べます。

正規表現として記述できるパターンは、単なる文字列が含まれているかどうかだけではなく、行頭にあるものや、ある文字が1回以上続けて記述されているものなど複雑な条件が指定できるようになっています。では次のページ以降で正規表現の使い方を詳しく見ていきます。

サンプルプログラム

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

sample1-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
$var = 'Hello';

if ($var == 'Hello'){
  print('文字列はHelloです<br />');
}else{
  print('文字列はHelloではありません<br />');
}

if ($var == 'He'){
  print('文字列はHeを含みます<br />');
}else{
  print('文字列はHeを含みません<br />');
}

if (preg_match('/He/', $var)){
  print('文字列はHeを含みます<br />');
}else{
  print('文字列はHeを含みません<br />');
}
?>

</p>

</body>
</html>

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

正規表現の利用方法

このように正規表現を使った場合は、文字列の中に一部の文字が含まれるかどうかを調べることが可能です。