繁体   English   中英

拆分字符串数组时如何转义正则表达式

[英]How to escape the regex when splitting an String array

我正在寻找一个更简单的解决方案。 我是Java的新手,我需要一些帮助。 我正在尝试通过此'],['将String拆分为String []。 问题是Java试图像Regex一样获得这些,而我不想使用它,因为我的能力还不够好。 我只想将字符串用这三个字符“],[”; 这是我的代码:

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

这是错误的输出:线程“ AWT-EventQueue-0”中的异常java.util.regex.PatternSyntaxException:索引2附近的未封闭字符类],[...请提出任何建议,以使这种想法可行?

PS。 还有其他分割字符串的方法吗? 我不太喜欢这个正则表达式。 我曾经使用过Qt和C#,在这两个地方都有一种逃避常规表达的方法。 非常感谢人们!

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

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

这是因为[]是RegEx中的特殊字符。 您必须使用\\\\对其进行转义以将其用作常规字符。

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

这样,您就不必用反斜杠escape特殊字符。 Pattern.quote使您在字符串中的所有special characters的行为类似于String文字:-

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
String usefulData = ...;
String[] list = null;
String token = "],[";
list = usefulData.split(java.util.regex.Pattern.quote(token));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM