如何在拆分String数组时转义正则表达式

时间:2012-10-15 20:41:16

标签: java regex string split escaping

我正在寻找一个更简单的解决方案。我是Java的新手,我需要一些帮助。我试图通过这个'],''将String拆分为String []。问题是Java试图让它们像正则表达式一样,我不想使用它,因为我不够好。我想把这三个字符分开字符串“],[”; 这是我的代码:

String usefulData = ...;
String[] list = null;
String token = "],[";
list = usefulData.split(token);

这是错误输出:线程中的异常“AWT-EventQueue-0”java.util.regex.PatternSyntaxException:索引2附近的未闭合字符类 ],[...请,任何有关如何使这种思考有效的建议?

PS。有没有其他方法来分割字符串?我不太喜欢这个正则表达式。我已经使用过Qt和C#,在这两个地方都有办法摆脱这种常规表现。非常感谢人们!

3 个答案:

答案 0 :(得分:4)

你想要“\] \,\ [\。”。

String usefulData = ...;
String[] list = usefulData.split("\\],\\[");

这是因为[]是RegEx中的特殊字符。您必须使用\\将它们转义为常规字符。

答案 1 :(得分:4)

您可以使用Pattern#quote方法构建String。

通过这种方式,您不必使用反斜杠escape特殊字符。 Pattern.quote使字符串中的所有special characters行为与字符串文字相似: -

String usefulData = "[a],[b],[c,d]";
String token = Pattern.quote("],[");
String[] list = usefulData.split(token);

for (String val: list) {
    System.out.println(val.replaceAll("\\[|\\]", ""));
}

输出: -

a
b
c,d

答案 2 :(得分:2)

String usefulData = ...;
String[] list = null;
String token = "],[";
list = usefulData.split(java.util.regex.Pattern.quote(token));