2015-06-15 4 views
2

Я пытаюсь выполнить разделение подобное следующее:java.util.regex.PatternSyntaxException: Непревзойденная закрытие ')': во время работы String.split

String str = "({Somestring 1 with a lot of braces and commas}),({Somestring 12with a lot of braces and commas})"; 
println str.split("}),({"); 

Но я вижу:

java.util.regex.PatternSyntaxException: Непревзойденная закрытие ')' рядом с индексом 0 }), ({

Очевидно, что моя строка рассматривается как обычный expressio п.

Есть ли способ, которым я могу избежать этой строки?

+1

Использование: 'str.split ("} \\), \\ ({")' – anubhava

ответ

4

персонажи ( и ) и { и } являются специальными символами в регулярном выражении. Вы должны избежать этих:

println str.split("\\}\\),\\(\\{"); 
1

Вместо того, чтобы избежать строку вручную, вы можете рассматривать его как буквальное, в отличие от регулярных выражений с:

println str.split(Pattern.quote("}),({")); 
0

Java characters, которые должны быть в regular expressionsescaped являются :

. [] {}() * + -?^$ |

public static void main(String[] args) { 
     String str = "({Somestring 1 with a lot of braces and commas}),({Somestring 12with a lot of braces and commas})"; 
     String[] array = str.split("\\}\\),\\(\\{"); 
     System.out.println(array.length); 
    } 
Смежные вопросы