[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
正規表現の起源は、いずれも理論計算機科学の一分野であるオートマトン理論や形式言語理論にみることができる。これらは計算のモデル化(オートマトン)や形式言語の分類方法などを扱う学術分野である。数学者のスティーヴン・クリーネは1950年代に正規集合と呼ばれる独自の数学的表記法を用い、これらの分野のモデルを記述した。ケン・トンプソンはテキストファイル中のパターンにマッチさせる手段として、この表記法をエディタQEDに導入した。彼はこの機能をUNIXのエディタedにも追加し、後に一般的な検索ツールであるgrepの正規表現へと受け継がれていった(grepはedエディタの正規表現検索コマンドg/re/pから派生した単語である。reは正規表現(regular expression)の頭文字。)。これ以降、トンプソンの正規表現の適用にならい、多くのUNIX系のツールがこの方法を採用した(例えばexpr、awk、Emacs、vi、lex、Perlなど)。
PerlとTclの正規表現はHenry Spencerによって書かれたものから派生している(Perlは後にSpencerの正規表現を拡張し、多くの機能を追加した)。Philip HazelはPerlの正規表現とほぼ互換のものを実装する試みとしてPerl Compatible Regular Expressions(PCRE)を開発した。これはPHPやApacheなどといった新しいツールで使用されている。Perl 6では、正規表現の機能を改善してその適用範囲や能力を高め、解析表現文法を定義できるようにする努力がなされた。この結果として、Perl 6文法の定義だけでなくプログラマのツールとしても使用できる、Perl 6 rulesと呼ばれる小言語が生み出された。これらの規則は正規表現の機能のすべてを保持しながら、副規則を通して再帰下降構文解析のBNFスタイルの定義を行うことができる。