次のパターンマッチャーがあります。
Pattern pat = Pattern.compile("[^a-z][^,.:;]");
]
キャラクター自体を含めるにはどうすればよいですか?
]
文字クラスの終わりを示すために使用される特殊文字であるため、エスケープする必要があります。
Pattern pat = Pattern.compile("[^a-z][^,.:;\\]]");
このようにエスケープ文字 \ を使用して実行できます\\].
本当に逃げる必要はありません。正規表現には特別なルールがあり、リストに実際の]
文字が必要な場合は、それを最初の要素にする必要があります。そして、それはうまくいきます。このコードを試してください:
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());
}
}
標準的な方法は、クラスのquote
関数を使用することです。Pattern
この関数は、指定された String のリテラル パターン String を返します。
String myLiteralString = Pattern.quote(",.[:;");
Pattern pat = Pattern.compile("[^a-z][^" + myLiteralString + "]");
このメソッドは、正規表現構文のすべての特殊文字をエスケープします。