如何在java字符串中搜索特殊字符?

时间:2013-05-21 20:45:38

标签: java regex escaping

我在搜索特殊字符方面遇到一些问题“(” 我得到了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 ("\(");  

4 个答案:

答案 0 :(得分:3)

尝试以下方法之一:

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

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

答案 1 :(得分:1)

第一次出现异常的原因是因为split()正则表达式作为参数,(具有特殊含义,正如您所建议的那样。为避免这种情况,您需要使用\来逃避它,就像您尝试过的那样。

你错过了,你还需要在Java中使用额外的\来逃避你的反斜杠,这意味着你需要总共两个:

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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