非法重复

时间:2014-12-04 15:10:13

标签: java string

String[] parts = pptValue.split("{");

在我的pptValue

pptValue = EnvWDI{env}{client}

我的错误:

Caught: java.util.regex.PatternSyntaxException: Illegal repetition
{
java.util.regex.PatternSyntaxException: Illegal repetition
{
    at java_lang_String$split.call(Unknown Source)

3 个答案:

答案 0 :(得分:3)

正则表达式中使用时,{字符具有特殊含义。

传递给String.split的字符串被解析为正则表达式,您必须转义具有特殊含义的字符,例如"\\{"

反斜杠字符用于转义特殊字符。由于\本身在字符串中具有特殊含义,因此它也必须被转义,因此是双反斜杠。

答案 1 :(得分:2)

我认为你需要摆脱大括号,就像在"\\{"中一样。

在有关转义字符的部分中查看Pattern的文档。幕后,split使用Pattern

答案 2 :(得分:1)

您需要转义{,因为它用于量化重复,请尝试:

public static void main(String[] args) {        
    String pptValue = "foo{bar";
    String[] parts = pptValue.split("\\{");
    System.out.println(parts.length);
    for (int i = 0; i < parts.length; i++){
        System.out.println(parts[i]);
    }
}