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

标准方式是使用类的quote函数Pattern。此函数返回指定字符串的文字模式字符串。

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

此方法转义正则表达式语法的所有特殊字符。

于 2013-04-16T13:58:50.637 回答
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 回答