2023-04-26: 色んな言語の文字クラスについて考えていた
やったこと
BDD
BDDというかもはや文字クラスの話題のような気がする。
現代的な正規表現実装で i フラグで1文字が複数文字列にマッチする (例: ß が SS にマッチする) 可能性があるのはデフォルトだとRubyくらいで、Javaも一応オプションでできる、みたいな感じなのではないかということに気付いた。
これをエスツェット問題と呼ぼう。
ちなみに /ss/i =~ "ß" もマッチする。どうなってるんだ‥‥。ICU4Jの正規表現実装でも同じようなことをやってくれる。
でも /s(s)/i =~ "ß" はマッチしないっぽい。なるほど。
ぶっちゃけこれ系の対応は現実的ではないので諦めてもいい気がする。難しすぎるわりにリターンが少ない。
あと.NETの正規表現実装も調査していた。Brzozowski微分を使ったやつ。
どうも i フラグの解釈はパースのときにやっているっぽい。
それが賢いのか。