【问题标题】:java split functionjava分割函数
【发布时间】:2011-07-12 13:30:49
【问题描述】:

谁能帮我理解split在java中的工作原理。我有以下代码

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 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.<init>(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 regex arrays string split


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    \ 是正则表达式以及 Java 字符串文字中的特殊字符。如果您想在正则表达式中使用文字反斜杠,则必须将其加倍两次。尝试\\\\(一旦词法化后变为\\,变为正则表达式解析器的文字\)。 p>

    【讨论】:

      【解决方案3】:

      你试图用反斜杠分割字符串,你需要使用:

      String regex = "\\\\";
      

      \ 是 Java 字符串和正则表达式引擎的转义字符。因此,Java 字符串 \\\ 的形式传递给正则表达式引擎,这是不完整的,因为 \ 必须后跟它试图转义的字符。

      字符串\\\\\\ 的形式传递到正则表达式引擎,这是一个\ 转义\,这实际上意味着一个文字\

      【讨论】:

        【解决方案4】:

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

        String regex = "\\\\";
        

        【讨论】:

          【解决方案5】:

          替换

          String regex = "\\";

          String regex = "\\\\";

          【讨论】:

            【解决方案6】:

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

            String regex = "\\\\";
            

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

            【讨论】:

            • 大声笑,我发现我没有我想象的那么快:D
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-24
            • 2018-11-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多