java分裂函数

有人可以帮助我理解java中的split是如何工作的。我有以下代码

 String temp_array[]; String rates = "RF\\0.6530\\0.6535\\D"; String temp = rates.substring(1, rates.length()); System.out.println(temp);// prints F\0.6530\0.6535\D String regex = "\\"; temp_array = temp.split(regex); String insertString = "INSERT into table values("+temp_array[0]+","+temp_array[1]+","+temp_array[2]+","+temp_array[3]+")"; 

但是在split函数中我得到以下exception

 Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^ at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.split(Unknown Source) at java.lang.String.split(Unknown Source) at simple_hello.main(simple_hello.java:15) 

当您键入"\\" ,这实际上是一个反斜杠(由于Java字符串中的特殊字符转义)。

正则表达式也使用反斜杠作为特殊字符,您需要使用另一个反斜杠来转义它。 所以最后,您需要将"\\\\"作为模式传递以匹配单个反斜杠。

\是正则表达式中的特殊字符,也是Java字符串文字中的特殊字符。 如果你想在正则表达式中使用文字反斜杠,你必须将它加倍两次。 尝试\\\\ (成为\\一旦被lexed,成为正则表达式解析器的文字\ )。

您正在尝试将字符串拆分为反斜杠,您需要使用:

 String regex = "\\\\"; 

\是Java字符串和正则表达式引擎的转义字符。 所以Java字符串\\作为\传递给正则表达式引擎,它不完整,因为它必须跟随它试图逃脱的字符。

字符串\\\\作为\\传递给正则表达式引擎,它是一个\转义\有效地表示文字\

你必须以正则表达式模式转义’\’字符,所以你的正则表达式基本上是

 String regex = "\\\\"; 

更换

String regex = "\\";

String regex = "\\\\";

你必须修复你的正则表达式。 它应该是:

 String regex = "\\\\"; 

因为双反斜杠是Java字符串的转义序列。