AとZを一致させるには、正規表現を使用します。
[A-Za-z]
ユーザーが入力したutf8文字を正規表現に一致させるにはどうすればよいですか?例えば、環保部のような中国語の単語
探しているのは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
は、すべての言語のすべての文字と数字に一致します(もちろん、_
)。
NLSサポートに対処し、英語の特殊文字を受け入れないようにするには、次のパターンを使用できます...
[a-zA-Z0-9\u0080-\u9fff] * +
UTFコードポイントリファレンスの場合: http://www.utf8-chartable.de/unicode-utf8-table.pl
コードスニペット:
String vowels = "అఆఇఈఉఊఋఌఎఏఐఒఓఔౠౡ";
String consonants = "కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరఱలళవశషసహ";
String signsAndPunctuations = "కఁకంకఃకాకికీకుకూకృకౄకెకేకైకొకోకౌక్కౕకౖ";
String symbolsAndNumerals = "౦౧౨౩౪౫౬౭౮౯";
String engChinesStr = "ABC導字會";
Pattern ALPHANUMERIC_AND_SPACE_PATTERN_TELUGU = Pattern
.compile("[a-zA-Z0-9 \\u0c00-\\u0c7f]*+");
System.out.println(ALPHANUMERIC_AND_SPACE_PATTERN_TELUGU.matcher(vowels)
.matches());
Pattern ALPHANUMERIC_AND_SPACE_PATTERN_CHINESE = Pattern
.compile("[a-zA-Z0-9 \\u4e00-\\u9fff]*+");
Pattern ENGLISH_ALPHANUMERIC_SPACE_AND_NLS_PATTERN = Pattern
.compile("[a-zA-Z0-9 \\u0080-\\u9fff]*+");
System.out.println(ENGLISH_ALPHANUMERIC_SPACE_AND_NLS_PATTERN.matcher(engChinesStr)
.matches());
個々の文字を照合するには、リテラルとして、または\u03FB
構文を介して、文字クラスに単純に含めることができます。
明らかに、表意文字言語で許可されているすべての文字をリストすることはできません。正規表現でUnicode文字をタイプまたはコードブロックに従って処理するために、 here で定義されている他のさまざまなエスケープがサポートされています。セクション「Unicodeサポート」、特にCharacter
クラスおよびUnicode Standard自体への参照を参照してください。
char
タイプで動作しますchar
タイプは暗黙的にUTF-16ですUnicodeは文字の普遍的なセットであり、UTF-8はそのすべて(制御文字、句読点、記号、文字などを含む)を記述できます。含めるものと除外するものについて、より具体的にする必要があります。 Java正規表現は\p{category}
構文を使用して、コードポイントを category で照合します。 Unicode standard カテゴリの リスト の場合。
一連の表意文字の単語を識別して分離する場合は、より洗練されたAPIを検討する必要があります。 BreakIterator
タイプから始めます。