Simple Regex Language - 複雑な正規表現を分かりやすく記述できる専用言語

S 20160830 194519

特殊な表記を使用して多様な文字列のパターンにマッチする表現を記述できる「正規表現」。さまざまなプログラミング言語でサポートされているため、正規表現を使用できる開発者の数はかなり多いと思われます。

ただし柔軟性が高い反面、複雑な正規表現を読みこなすのは大変で、例えば以下の正規表現が何を意味しているのか直感的に理解できる方は少ないかもしれません。

/^(?:[0-9]|[a-z]|[\._%\+-])+(?:@)(?:[0-9]|[a-z]|[\.-])+(?:\.)[a-z]{2,}$/i

本日紹介する「SRL - Simple Regex Language」はこの問題を解決すべき開発されている、正規表現をわかりやすく記述するための専用言語です。

SRLのシンタックス

S 20160830 195525

SRLでは独自のシンタックスに基づき正規表現を記述し、それに対応する正規表現を生成することができます。

例えば以下のようなサンプルが掲載されてます。

begin with either of (number, letter, one of "._%+-") once or more,
literally "@",
either of (number, letter, one of ".-") once or more,
literally ".",
letter at least 2 times,
must end, case insensitive

▲SRLシンタックスによるメールアドレスの正規表現

/^(?:[0-9]|[a-z]|[\._%\+\-])+(?:@)(?:[0-9]|[a-z]|[\.\-])+(?:\.)[a-z]{2,}$/i

▲上記SRLシンタックスから生成された正規表現

このような単純なマッチだけではなく、括弧を使った部分文字列のキャプチャにも対応していて、そのサンプルも掲載されています。

実際にSRLを利用する場合、オンラインで公開されている正規表現のビルド機能を使用し、生成された正規表現をコピーして組み込むか、PHP 7のプロジェクトならばSRLを直接組み込んで全ての機能を使用することができます。

まとめ

正規表現にある程度親しんでいる方の場合、Simple Regex Languageを使って実際の作業が楽になるかどうか微妙なところかもしれませんが、より分かりやすい表現方法を探求する興味深い試みとはいえそうです。

Hacker NewsではSRLと類似した、正規表現を分かりやすく記述するためのツールへのリンクが多数掲載されており、正規表現の置き換えが正しいことなのかといった事も含めて熱い議論が交わされています。興味のある方は参照してみてはいかがでしょうか。

スポンサーリンク