効率を度外視すれば,内部で UTF-32 に変換 (+実文字列の offset とのマッピングを保持) した上で boost::regex を使うことによって, UTF-8 なり UTF-16 なりの文字列を TR18 の Level 1 の意味で扱える正規表現実装をかなり簡単に書けるような気がしてきた.気がしてきただけ.
Level 2 も頑張って内部で正規表現書き換えまくればできるんじゃないかな?ただし,たとえば Default Grapheme Cluster のプレースホルダを実装することを考えただけでも,ルールがそこそこ面倒でいやんな感じだから相当頑張らないといけないけれど.
Level 3?むきーっ!!そんなの知るかーっ!!