0

どの文字とも一致しない文字クラスを作成したい。今のところ、次のようなパターンを表しています。

Pattern p = Pattern.compile("[a&&b]");

あるいは

Pattern p = Patterncompile("[^\\x{0}-\\x{10FFFF}]");

これを行う適切な方法はありますか?

注: 文字クラスを含まない代替ソリューション (否定先読みなど) を提供する必要はありません。それを行う「正しい」方法があるかどうかを知りたいだけです。

更新: ユーザーが最初に入力した内容の簡易版をユーザーに出力する機能を実装しています。文字クラスを単純化しているため、現在のバージョンで[][a&&b]. もう一度解析する[]と、エラーがスローされますが、これは私が望んでいるものではありません。したがって、次のようなものを表示してユーザー入力を変更しない適切な方法があるかどうかを知りたかったのはそのためです。^$

4

2 に答える 2

2

あまり意味がありませんが、文字クラス内で文字クラス減算機能を使用して、実際に char を定義して減算することができます。この場合、このクラスは何にも一致しません。

例:

[a&&[^a]]

文字クラスは のみに一致aし、aは減算されるため、このパターンは何にも一致しません。

于 2016-09-30T10:19:16.960 に答える
-2

あなたが作ったものは文字クラスではなく、正規表現です。空の入力に一致させたい場合 (単語の「どの文字にも一致しません」)、 を使用します^$

于 2016-09-30T10:16:53.190 に答える