正規表現病にかかり気味な人へ

久しぶりにプログラムを触ってたので、思ったことをチラホラと。

これは、PHPのお話です。(他の言語でも似たようなものだと思います)

正規表現というのの説明は今更要らないと思いますので省きます。正規表現は確かに強力なツールなのですが、強力すぎて他の手法に目が行かなくなるという危険性を持っています。

例えば、文字列の始まりが特定の文字列であるというのを検証する場合、正規表現のようなオーバースペックの物を使わずとも、strposで0というインデックスが戻って来るかどうかだけで判断できます。実際にパフォーマンスを計ったのは1年以上昔のことなので具体的な数字は忘れちゃいましたが、正規表現による検証の方が1桁遅いという結果だったと覚えています。

複雑な文字列検証を行う場合の正規表現のパフォーマンスには脱帽しますが、単純な利用用途では、正規表現を使わないという選択肢があることをプログラマも知っておくと良いと思います。

ただ、可読性で言えばstrposのインデックスが0かどうかよりも正規表現の書き方の方が分かり易いケースもあるんですよね。というか、正規表現で書く方が一般的なのかな。そのあたりが悩ましいところですね。

結論としては、パフォーマンスに悩んだ場合に、正規表現を捨てるという感じでどうでしょうか?(超弱気)
1