正規表現と IO、正規表現とリフレクション、正規表現と PEG

IO に対して正規表現マッチングをするのって面白そうだなぁと思います。マッチ成功するか、必ずマッチ失敗することがわかるまで、適宜ストリームを読み込んでくれる感じ。後方参照はなしでいいので。何に使えるかは後からついてきます。

関係ありそうであまり関係ないですが、正規表現のリフレクション API があると便利だし面白そうだと思いました。正規表現の文字列を作って Regexp.new するより可読性が高そうですし、Regexp.quote のし忘れというよくある落とし穴も防止できそうです。多分。何より、すでに作られた正規表現を改変できると、きっといろいろ愉快なことができるに違いありません。いいことか悪いことかは知りませんが。

また関係ない話ですが、世の中「正規表現はまああかん、これからのパフォーマーは PEG」という雰囲気なんでしょうか。PEG はネクス正規表現というよりネクス構文解析だと思ってました。とりあえず本気で正規表現の代替物を目指すなら、簡単に書けるリテラルが欲しいかも。正規表現の強みは単なる表現能力じゃなくて、表現能力と記述性のバランスがとれてることですよね。その代わり、なんというかこう、美しさみたいなものが犠牲になってる *1 ので、大きめのアプリの根幹に正規表現を使う気にはならないのですが。とりあえず JavaRegex は \ ですごく不幸になるので論外。

以上、今日はコードも書かずに戯れ言を言う日でした。おやすみなさい。

*1:マッチの結果が $1 だの $~ だののグローバル変数 (っぽいもの) に書き出されるなんて、冷静に考えると耐え難く気持ち悪いですよね。