正規表現入門 (2)

前回までの正規表現! 「POSIX LocaleのLC_COLLATEにはcollating symbolもcollating elementもない。伝説の木の下で告白を、じゃなかった、POSIX Localeの下で[.または[=で始まるハイクを詠め。カイシャクしてやる」と言ったな。あれは嘘だ。ゴメン! ゴメン! 一旦ゴメン!

META_CHARを含むBracket Expressionを書くたったひとつの冴えないやりかたは、

[[.^.][.-.][.].]]

と書くこと。ホントだよ。BoostのEREの説明にも書いてある。

Collating elements may be used in place of escapes (which are not normally allowed inside character sets), for example [[.^.]abc] would match either one of the characters 'abc^'. 

人類のおおかたの直感に反して、なかんずく私の浅い理解に反して、

[^\^\-\.]

と書くことはできないらしい。

Localeを笑う者はLocaleに泣く。POSIX Localeであっても、ASCIIの範囲について照合順序が定義されている。定義されていないと困る。とても困る。POSIX LocaleのLC_COLLATEを再読する。collating-symbolキーワードもcollating-elementキーワードもない。collating-identifierはあった。127個あった。つまり、自分自身であるような127個のcollating elementが存在する。そういうことなんだろうと思う。Locale難しい。Locale難しすぎて、あやまり倒しに進化するレベル。土下座deドミノ!

続くかも。