Unicode Common Locale Data Repository(CLDR)には、言語と文字の関係に関する豊富な情報があります。たとえば、misc.exemplarCharactersチャートを見ると、特定の言語で使用されている文字を判別できます。これらのチャートの生データはXMLファイルとして保存され、模範文字はUnicode正規表現標準UTS18に従って正規表現として保存されます。
UTS18正規表現がどのように見えるかのいくつかの例を次に示します。
1. [a à b c ç d e é è f g h i í ï j k l ŀ m n o ó ò p q r s t u ú ü v w x y z]
2. [অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ ং \u0981 ঃ ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড {ড\u09BC}ড় ঢ {ঢ\u09BC}ঢ় ণ ত থ দ ধ ন প ফ ব ভ ম য {য\u09BC} ৰ ল ৱ শ ষ স হ া ি ী \u09C1 \u09C2 \u09C3 ে ৈ ো ৌ \u09CD]
3. [a á b ɓ c d ɗ e é ɛ {ɛ\u0301} f g i í j k l m n {ny} ŋ o ó ɔ {ɔ\u0301} p r s t u ú ū w y]
PHPとSimpleXMLを使用してXMLデータを解析し、これらの正規表現文字列を分離しています。ここで、個々のマルチバイト文字をこれらの正規表現に一致させたいと思います。現在、mb_ereg_match関数を使用しています。この関数は、次の警告の1つ以上を生成します(正規表現によって異なります)。
mbregex compile err: premature end of char-class in ...
mbregex compile err: empty range in char class in ...
mbregex compile err: empty char-class in ...
これが機能しない理由について何かアイデアはありますか?