Perl, Rubyなど手軽に使えるプログラミング言語に慣れてくると、あらゆるテキストデータの処理に正規表現(regular expression)を使ってしまいがちです。 けれど実は、正規表現の処理能力を超えるフォーマットというのが存在します。その典型的な例が、XMLやJSONのように、入れ子になったデータフォーマットです。
C言語のコメントと異なり、Haskellなどのコメントはネストすることができます。つまり、C/C++で /* /* ネストしたコメント */ ここはすでにコメント終了している */ はコンパイルエラーになりますが、Haskellだと {- {- ネストしたコメント -} ここはまだコメント内 -} などと書くことができます。 このHaskellコメント全体を正規表現でマッチさせたいとします。 Perlの正規表現(とPHPのPerl互換正規表現)には、再帰的な表現をマッチさせる構文があります。 http://php.net/manual/ja/regexp.reference.recursive.php ↑のPHPマニュアルでは、 \( ( (?>[^()]+) | (?R) )* \) という正規表現で、再帰的な括弧()にマッチングする例が紹介されています。では、haskellのコメント{
RegexPal is a tool to learn, build, & test Regular Expressions (RegEx / RegExp). Results update in real-time as you type. Roll over a match or expression for details. Save & share expressions with others. Explore the Library for help & examples. Undo & Redo with {{getCtrlKey()}}-Z / Y. Search for & rate Community patterns.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く