Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在拆分字符串数组时转义正则表达式_Java_Regex_String_Split_Escaping - Fatal编程技术网

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

Java 如何在拆分字符串数组时转义正则表达式,java,regex,string,split,escaping,Java,Regex,String,Split,Escaping,我在寻找一个更简单的解决方案。我是Java新手,需要一些帮助。我正试图通过这个“]”,[”,将字符串拆分为字符串[]。问题是Java试图像正则表达式一样获取这些字符串,我不想使用它,因为我在这方面做得不够好。我只想通过这3个字符来拆分字符串,]; 这是我的密码: String usefulData = ...; String[] list = null; String token = "],["; list = usefulData.split(token); 下面是线程AWT-EventQu

我在寻找一个更简单的解决方案。我是Java新手,需要一些帮助。我正试图通过这个“]”,[”,将字符串拆分为字符串[]。问题是Java试图像正则表达式一样获取这些字符串,我不想使用它,因为我在这方面做得不够好。我只想通过这3个字符来拆分字符串,]; 这是我的密码:

String usefulData = ...;
String[] list = null;
String token = "],[";
list = usefulData.split(token);
下面是线程AWT-EventQueue-0java.util.regex.PatternSyntaxException:Unclosed character类中索引2附近的错误ouput:Exception ],[…请问,有什么建议可以让这种想法起作用吗

还有其他方法可以拆分字符串吗?我不太喜欢这个正则表达式。我用过Qt和C,在这两个地方都有一种方法可以摆脱这种常规表达式。谢谢大家!

你想要\]\,\[

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

这是因为[和]是正则表达式中的特殊字符。必须使用\\对其进行转义,才能将其用作常规字符。

可以使用方法生成字符串

这样,您就不必用反斜杠转义特殊字符。Pattern.quote使字符串中的所有特殊字符的行为与字符串文字类似:-

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]?在本例中,拆分结果将类似于[[a,b]].这就是你想要的吗?@DonAngelo.记住通过单击每个答案旁边的箭头来接受其中一个答案。.谢谢分享,我总是逃避自己。@LanguagesNameAfterCofee Lol:现在你不必了。只要在需要的时候引用你自己;@DonAngeloAnnoni。@DonAngeloAnnoni.你好,你可以尝试我的更新代码。我添加了要删除的代码[和]从头到尾。@DonAngeloAnnoni..在这类工作中使用正则表达式要比使用子字符串、while循环以及您标记的答案中的所有内容好得多。
a
b
c,d
String usefulData = ...;
String[] list = null;
String token = "],[";
list = usefulData.split(java.util.regex.Pattern.quote(token));