1

我在搜索特殊字符“(”时遇到了一些问题。
我得到了一个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

4 回答 4

3

尝试其中之一:

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

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

于 2013-05-21T20:46:59.053 回答
1

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

  • split(Pattern.quote("(")),
  • split("\\Q(\\E"),
  • split("\\("),
  • split("[(]").
于 2013-05-21T20:53:29.160 回答
1

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

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

String splitList[] = myString.split ("\\(");  
于 2013-05-21T20:46:53.040 回答
1

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

于 2013-05-21T20:47:39.157 回答