模式匹配

时间:2013-04-16 12:26:11

标签: java regex matcher

我有以下模式匹配器。

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

如何在其中加入]字符?

5 个答案:

答案 0 :(得分:5)

你需要逃脱它。

\\]

See this.

答案 1 :(得分:5)

]是一个特殊字符,用于表示character class的结尾,因此需要对其进行转义:

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

答案 2 :(得分:1)

您可以使用转义字符\来完成此操作,例如此\\].

答案 3 :(得分: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());
    }
}

答案 4 :(得分:0)

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

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

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