正規表現の真の力:HTMLも解析できる
The true power of regular expressions (2012)
正規表現は「正規言語しか扱えない」とよく言われますが、実際のプログラミング言語の正規表現エンジンは、再帰や名前付きサブパターンを使うことで文脈自由文法を解析できます。本記事では、PCREの例を用いて、`a^n b^n`のような文脈自由言語をマッチングする方法や、RFC 5322のメールアドレスを定義する複雑な正規表現を紹介します。左再帰を右再帰に変換すれば、任意の文脈自由文法を正規表現で表現可能であることを示します。
正規表現は文脈自由言語をマッチングできるだけでなく、実際にはあらゆる文脈自由文法を表現できる。