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