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字符串的转义序列。