0PHPの正規表現エンジンとチェックツール5選PHPの正規表現の内容に入る前に簡単におさらいします。PHPとは、動的なウェブページを作成することを目的としたWebのプログラミング言語であり、Web系サーバーサイド言語です。日本ではJavaに次いで人気の高いプログラミング言語になります。今回は、このPHPの「正規表現」についてご紹介していきます。正規表現とは正規表現とは、文字列の集合を一つの文字列で表現する方法です。元々は形式言語理論において正規言語を表すための手段として導入されておりましたが、その後、様々な記法が付け加えられています。前まではテキストエディタやツールで使用されていましたが、現在の正規表現はほとんどスクリプト言語で使用しています。文字クラスとは正規表現を作成する時に対象になる文字パターンを指定する「文字クラス」というものが存在します。この文字クラスは、自分で定義することが出来るうえ、定義済みの文字クラスを使うことも出来ます。文字クラスの使い方は、クラスは[角カッコ]内で指定します。文字クラスは[各カッコ]を使用せず省略して記述することも可能です。下記に一部ご紹介します。特定のパターンを持っているか調べる正規表現で「マッチング」というものがあります。これはPHPだけではなく、他のプログラミング言語の正規表現でも使います。このマッチングは4つのパターンがあります。・途中でマッチした場合は、その位置でマッチングを終える・マッチするものがない場合は、文字列を最後まで調べて終わる上記の通り、基本的には左側から始まりマッチングした時点で終了します。PHPではなくRubyですが、別コラムでマッチングの動きを画像で解説しておりますので、ご参照ください。PHPの正規表現の種類PHPには、正規表現の文法を解釈し、パターンマッチングを行うための処理プログラム用のエンジンが用意されています。POSIXPOSIXは、拡張正規表現を扱う正規表現エンジンで、扱う関数は「ereg」で始まります。セキュリティが弱くPHP5.3以降で非推奨のためおすすめできません。PCREPCREは、Perl互換の正規表現エンジンで、扱う関数は「preg」で始まります。mbregexmbregexは、Rubyの「鬼車」という正規表現エンジンですがPHPでも使用出来ます。扱う関数は「mb」で始まります。PHPの正規表現の基本的文字一覧メタ文字とは正規表現の中に良く出てくる「メタ文字」とは何でしょうか。メタ文字とは、文字本来の意味とは異なり、プログラムで特別な意味を持たせた文字のことを指します。正規表現で使用される1回以上の連続文字を意味するメタ文字は「+」です。これは本来の足すという意味ではなく連続を意味します。メタ文字で1+1と表示されていた場合は、11、111、1111などに一致します。メタ文字は、環境や機能の中で任意に意味が決められているため、環境に応じて使用するメタ文字は何を意味するのか把握しておく必要があります。今回は、Rubyの正規表現で使用する基本的なメタ文字をご紹介します。正規表現で出来る事は、主に文字列で「調べる」「抜き出す」「置き換える」の3つです。PHPには正規表現のリテラルがありませんので、正規表現パターンは文字列として記述します。そのため「’」で囲みますが、間違えて「”」にしてしまうと、変数展開される場合がありますのでご注意下さい。「’」をリテラルとする場合のエスケープは「\」になります。それ以外の場所で使用する「\」は、全て「\」そのものとして扱われます。正規表現では「\」はメタ文字として扱われるため、「\\」でエスケープする必要があります。なると、「\」にマッチする正規表現の場合は「\\\\」と4つ並べる必要があります。最初はややこしくてわかり難いですが、覚えてしまえばすぐに慣れます。・正規表現チェッカーPHPとJavaScriptの正規表現を記述する際の動作チェックなどに使用出来ます。正規表現と対象になる文字列を入力することで実行結果が確認出来ます。・PHP正規表現チェッカーPHP専用の正規チェックを行うツールです。「preg_match」「preg_match_all」「preg_replace」「preg_split」の4つを確認出来ます。LANDHEREPHPのPCRE(preg)系の正規表現を確認するツールです。「preg_match」「preg_match_all」の処理結果を確認出来ます。VPHPのPCRE、POSIXはもちろん、PerlやPythton、JavaScript、Node.JSの正規表現をこのツール1つで確認することが出来ます。RegexPHPの正規表現をリアルタイムに動作確認出来るツールです。「preg_match」「preg_match_all」「preg_replace」の3つを確認することが出来ます。