【问题标题】:How to search for a special character in java string?如何在java字符串中搜索特殊字符?
【发布时间】:2013-05-21 20:45:38
【问题描述】:

我在搜索特殊字符“(”时遇到了一些问题。
我有一个java.util.regex.PatternSyntaxException exception has occurred。
它可能与“(”被视为特殊字符有关。 我不太擅长模式表达。有人可以帮我正确搜索转义字符吗?

   // I need to split the string at the "("

   String myString = "Room Temperature (C)";
   String splitList[] = myString.split ("(");   // i got an exception


   // I  tried this but got compile error           
   String splitList[] = myString.split ("\(");  

【问题讨论】:

  • 好的,非常感谢,它可以工作了。

标签: java regex escaping


【解决方案1】:

尝试以下方法之一:

string.split("\\(");
string.split(Pattern.quote("("));

由于字符串拆分将正则表达式作为参数,因此您需要正确转义字符。请在此处查看 Jon Skeet 的 answer:

【讨论】:

    【解决方案2】:

    您第一次遇到异常的原因是因为split() 将正则表达式 作为参数,而( 在那里具有特殊含义,正如您所建议的那样。为避免这种情况,您需要使用 \ 对其进行转义,就像您尝试过的那样。

    您错过的是,您还需要在 Java 中使用额外的 \ 来转义反斜杠,这意味着您总共需要两个:

    String splitList[] = myString.split ("\\(");  
    

    【讨论】:

      【解决方案3】:

      您需要通过反斜杠转义字符:string.split("\\(");

      【讨论】:

        【解决方案4】:

        ( 是正则表达式 special 字符之一。为了逃避它,你可以使用例如

        • split(Pattern.quote("(")),
        • split("\\Q(\\E"),
        • split("\\("),
        • split("[(]")。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-25
          • 1970-01-01
          • 2017-05-22
          • 2018-08-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-14
          相关资源
          最近更新 更多