2013-03-20 10 views
5

PCREの\p{L}と同様に、ユニコード文字を照合する必要があります。ユニコード文字をRegExpと一致させる

DartのRegExpクラスはECMAScriptのクラスに基づいているため、悲しいことに\p{L}という概念はありません。

おそらく、すべてのUnicode文字に一致する大きな文字クラスを構築しようとしていますが、どこから始めるべきかわかりません。

だから、私は手紙に同様一致させたい:

foobar 
מכון ראות 

をしかし、Rの記号が一致すべきではありません。

BlackBerry® 

どちらべき任意のASCII制御文字や句読点など基本的には、すべての言語での文字がサポートされています。これは、å、ä、φ、תのいずれであっても、実際の文字であれば一致するはずです。

答えて

2

文字列のルーンを繰り返し処理してから、整数値をユニコード範囲のテーブルと照らし合わせる必要があるようです。

Golangには、unicode sourceから直接これらのテーブルを生成するコードがあります。 maketables.goおよびgolang unicodeパッケージのその他のファイルを参照してください。

それとも怠惰なオプションを取り、ダートバグを報告し、そしてそれを実現するためのダーツチームを待つ;)

2

を私は文字や非文字としてUnicode文字の分類に関する完全な情報はないと思いますDartライブラリのどこにでもあります。 Intlライブラリ、特にBidiのものを使って、ほとんどの場合動作するものを一緒に配置することができます。例えば、

isLetter(oneCharacterString)=> Bidi.endsWithLtr(oneLetterString)|| Bidi.endsWithRTL(oneLetterString);

可能性があります。少なくとも、そこには有効な文字の範囲がいくつかあるようです。あるいは、_LTR_CHARSと_RTL_CHARSの情報に基づいて独自のRegExpを組み立てることもできます。明示的には100%正確ではないが、最も実用的な目的には良いと明言している。

2

これはまだDartまたはJSではサポートされていません。

Xregexp JSライブラリは、このようなものをサポートするためにかなり大きな文字クラス正規表現を生成するためのサポートを持っています。あなたは、正規表現を生成し、それを印刷し、それをあなたのアプリにカットアンドペーストすることができるかもしれません。

関連する問題