86

A を Z に一致させるには、正規表現を使用します。

[あざーず]

ユーザーが入力した utf8 文字に正規表現を一致させるにはどうすればよいですか? たとえば、环保部のような中国語の単語</p>

4

4 に答える 4

130

探しているのは Unicode プロパティです。

たとえば\p{L}、任意の言語の任意の種類の文字です

したがって、そのような中国語の単語に一致する正規表現は次のようになります

\p{L}+

このようなプロパティは多数あります。詳細については、regular-expressions.infoを参照してください。

別のオプションは、修飾子を使用することです

Pattern.UNICODE_CHARACTER_CLASS

Java 7 にはPattern.UNICODE_CHARACTER_CLASS、事前定義された文字クラスの Unicode バージョンを有効にする新しいプロパティがあります。詳細とリンクについては、こちらの回答を参照してください。

あなたはこのようなことをすることができます

Pattern p = Pattern.compile("\\w+", Pattern.UNICODE_CHARACTER_CLASS);

任意の言語のすべての文字と\wすべての数字に一致します (もちろん、 のような文字を組み合わせた単語もあります_)。

于 2012-06-05T09:21:08.527 に答える
9

個々の文字を一致させるには、リテラルとして、または\u03FB構文を介して文字クラスに単純に含めることができます。

表意文字言語で許可されているすべての文字を一覧表示できないことがよくあります。タイプまたはコード ブロックに従って正規表現で Unicode 文字を処理するために、ここで定義されているさまざまな他のエスケープがサポートされています。「Unicode サポート」セクション、特にCharacterクラスへの参照と Unicode 標準自体への参照を見てください。

于 2012-06-05T08:50:24.760 に答える
4
  • Java 正規表現 API はchar型で動作します
  • タイプはchar暗黙的に UTF-16 です
  • UTF-8 データがある場合、入力時に UTF-16 にトランスコードする必要があります (これがまだ行われていない場合)。

Unicode は普遍的な文字セットであり、UTF-8 はそのすべて (制御文字、句読点、記号、文字などを含む) を記述できます。何を含め、何を除外するかをより具体的にする必要があります。Java 正規表現は、構文を使用してカテゴリ別\p{category}にコードポイントを照合します。カテゴリのリストについては、 Unicode 標準を参照してください。

一連の表意文字で単語を識別して分離したい場合は、より洗練された API を検討する必要があります。タイプから始めBreakIteratorます。

于 2012-06-05T09:19:58.903 に答える