3

非ラテン文字と一致させたかったのです。それを試してみました。私の理解によると、 if (a.matches("[\\x8A-\\xFF]+"))trueを返す必要がありますが、falseです。

String a = "Ž";
if (a.matches("[\\x8A-\\xFF]+"))
{

}
4

1 に答える 1

6

あなたのタイトルから判断すると:

非ラテン文字を ASCII 0 ~ 31 および 128 ~ 255 と照合する正規表現

32 ~ 127 の範囲の文字を除くすべての文字のようですが、Ž が一致しないことに驚いています。

これが正しい場合は、式[^\x20-\x7F]( 「範囲 32-127 を除くすべての文字」 ) を使用することをお勧めします。これŽ に一致します。

(タイトルの正規表現を正確に翻訳すると次のようになります[\x00-\x1F\x80-\xFF]が、以下で説明する Ž とは一致しません。)

最初の試みがうまくいかなかった理由:

\xNN一致する文字のUnicode 値。Ž の Unicode 値は 0x017D です。つまり、範囲外です\x8A- \xFF

"Ž" が 8E であると言う場合、拡張 ASCII テーブルからの値である可能性が高く、これらは Java 正規表現エンジンが処理する値ではありません。

于 2015-05-28T07:36:27.260 に答える