1

次のパターンマッチャーがあります。

 Pattern pat = Pattern.compile("[^a-z][^,.:;]");

]キャラクター自体を含めるにはどうすればよいですか?

4

5 に答える 5

5

あなたはそれを逃れる必要があります。

\\]

これを参照してください。

于 2013-04-16T12:27:37.670 に答える
5

]文字クラスの終わりを示すために使用される特殊文字であるため、エスケープする必要があります。

Pattern pat = Pattern.compile("[^a-z][^,.:;\\]]");
于 2013-04-16T12:27:42.950 に答える
1

このようにエスケープ文字 \ を使用して実行できます\\].

于 2013-04-16T12:28:53.957 に答える
0

本当に逃げる必要はありません。正規表現には特別なルールがあり、リストに実際の]文字が必要な場合は、それを最初の要素にする必要があります。そして、それはうまくいきます。このコードを試してください:

public static void main(String[] args){
    String texto = "[]hello[]";
    Pattern p = Pattern.compile("[]]+");
    Matcher m = p.matcher(texto);
    while(m.find()){
        System.out.println(m.group());
    }
}
于 2013-04-16T12:33:38.480 に答える
0

標準的な方法は、クラスのquote関数を使用することです。Patternこの関数は、指定された String のリテラル パターン String を返します。

String myLiteralString = Pattern.quote(",.[:;");
Pattern pat = Pattern.compile("[^a-z][^" + myLiteralString + "]");

このメソッドは、正規表現構文のすべての特殊文字をエスケープします。

于 2013-04-16T13:58:50.637 に答える