我有以下模式匹配器。
Pattern pat = Pattern.compile("[^a-z][^,.:;]");
如何在其中包含]
角色本身?
]
是一个特殊字符,用于表示字符类的结束,因此需要对其进行转义:
Pattern pat = Pattern.compile("[^a-z][^,.:;\\]]");
您可以像这样使用转义字符 \ 来做到这一点\\].
标准方式是使用类的quote
函数Pattern
。此函数返回指定字符串的文字模式字符串。
String myLiteralString = Pattern.quote(",.[:;");
Pattern pat = Pattern.compile("[^a-z][^" + myLiteralString + "]");
此方法转义正则表达式语法的所有特殊字符。
你真的不需要逃避它。正则表达式中有一个特殊规则,如果你想要]
列表中的实际字符,它必须是它的第一个元素。它会工作得很好。试试这个代码:
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());
}
}