C言語のコメントと異なり、Haskellなどのコメントはネストすることができます。つまり、C/C++で /* /* ネストしたコメント */ ここはすでにコメント終了している */ はコンパイルエラーになりますが、Haskellだと {- {- ネストしたコメント -} ここはまだコメント内 -} などと書くことができます。 このHaskellコメント全体を正規表現でマッチさせたいとします。 Perlの正規表現(とPHPのPerl互換正規表現)には、再帰的な表現をマッチさせる構文があります。 http://php.net/manual/ja/regexp.reference.recursive.php ↑のPHPマニュアルでは、 \( ( (?>[^()]+) | (?R) )* \) という正規表現で、再帰的な括弧()にマッチングする例が紹介されています。では、haskellのコメント{