林檎の木タイトル画像

Windows用のフリーソフト、シェアウェアの紹介サイト

PHP正規表現チェッカーの紹介

PHP正規表現チェッカー PHP正規表現チェッカー

ブラウザ上から正規表現の動作が簡単にチェックできる。置換の動作確認も可能。

メイン画像
メイン画像
メイン画像
ライセンス: フリーソフト
おすすめ度:
4点 / 1件 )
著作権者: rider
動作環境: WEBアプリ
公式サイト:

みなさん正規表現を愛していますか? 正規表現とどう向き合っているのでしょうか?
念のため軽く正規表現の説明をしておきます。英語で書くならRegular Expression。こいつ直訳感があふれている癖にプログラミング等で大変重要になってくる表現方法なのです。正規表現とはある文字列のパターンを表現するためのものです。それだけのものと言えばそうなんですが、正規表現だけで3cmぐらいある本が出来てしまうような代物です。
例えば郵便番号を正規表現で表すとどうなるのか。郵便番号がどんな形式のものかを言葉で説明するならば「数字で三桁、ハイフンで区切って、末尾の数字が四桁のもの」と書くことが出来ます。これを曖昧な言葉なんかではなく、誰の目にも明らかな万国共通の形式で表現できる正規表現で表すと「/\d{3}\-\d{4}/」こうなります(なお有効な郵便番号かどうかは考慮していません)。よく訓練された正規表現つかいならば、この正規表現を眺めているとフワッフワーププーと頭のなかに郵便番号が現れると聞きます。私はまだその域には達していない。

その複雑で難解な正規表現を書く際に大変強い味方となってくれるのがPHP正規表現チェッカーです。対象となる文字列に対して、入力した正規表現がどうマッチするか、もしくはマッチしないかなどをブラウザ上から簡単にチェックする事が出来ます。正規表現を編集するとリアルタイムでその結果を確認できるので、効率的に正規表現を作成できます。マッチした文字列を置換してみるとどうなるかを確認する機能搭載。正規表現の基本的なメタ文字やエスケープシーケンスを左のメニューに表示してくれる新設設計なので、「数字ってなんだっけ? \、\...」って時にいつもお世話になっております。猛烈に便利な機能がマッチグループの表示機能。マッチした文字列のうち特定の部分を取得したい場合に大活躍。林檎の木にで例えます。フォーラムやソフトコメント機能で「>>3」こんな風に書くとそのレスに対してアンカーを張れるじゃないですか。あれは内部的に「/>>(\d{1,4})/」こんな正規表現でひっかけています。その際にプログラムがどのレスへのアンカーなのかを判別するために「>>3」これの数字の部分だけが欲しいのです。「>>」の部分はいらない。その際に使うのがマッチグループ。先ほどの正規表現の中に()で囲った部分があるのにご注目ください。あれで、数字の部分だけグルーピングしています。この場合マッチグループの0番にマッチした全体の文字列「>>3」が、マッチグループの1番に数字の部分だけの「3」がセットされます。今回の例はカッコが一つしかないので恩恵をそれほど感じませんが、カッコが5個も6個もある場合には、何番に何が入るのかわけが分からなくなるのです。PHP正規表現チェッカーを使えば、マッチグループの何番にどういった文字列が入っているのか一覧で表示する事が出来ます。いい、とてもいい。

名前にPHPと付いているのは、PHP正規表現チェッカーがそもそもPHPで出来ていて、PHPの正規表現の実装を使ってパターンマッチさせているからだと思われます。正規表現は各プログラミング言語で利用可能ですが、微妙に動作が違うらしくPHP正規表現チェッカーでOKでも、PHP以外で使ったら駄目だったとかはあると思う。そんな時は「Perl互換の正規表現」にチェックを入れて使うのがおすすめ。Perl互換の正規表現とは、プログラミング言語のPerlによって拡張された正規表現で、有名どころのプログラミング言語ならPerl互換の正規表現が利用可能です。なので「Perl互換の正規表現」で大丈夫なら、他の言語でもほぼほぼ問題ないはず。

管理人おすすめ度:

管理人おすすめ度

( 2013/02/16 )

ユーザーレビュー

まだユーザーレビューの投稿がありません。

レビューを投稿する
レビューを投稿する

コメント

2 : Newton : 2013/02/16 (土) 23:19:46 返信
あ、エスケープ忘れてますね。修正しました
3 : kOY59o : 2013/02/17 (日) 03:01:17 返信
いつもサクラエディタの変換でちまちま確認してたけど、これからはこれ使ってみようかな♪
4 : mb9fkw : 2013/02/18 (月) 00:50:27 返信
>>1 「[]」の中ならエスケープ必要だけど、外なら不要だと思ってたけど?
5 : 9OA8pp : 2013/02/18 (月) 10:23:29 返信
>>4 完全に把握してるわけじゃないけど、今回は数字の範囲指定になってしまうから必要に思う。ハイフンは文字として判定してほしいわけだし。物によっては期待通りかもしれんが明示した方が誤爆も少ない。
6 : 4APeLp : 2013/02/20 (水) 22:48:20 返信
>>5 数字の範囲指定ならば\d{Min,Max}で指定できるので今回の件では不要ですが、確かに誤爆が少なくなるのでエスケープした方が良いかもしれませんね。

公式サイト : PHP正規表現チェッカー