Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java字符串中搜索特殊字符?_Java_Regex_Escaping - Fatal编程技术网

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

如何在java字符串中搜索特殊字符?,java,regex,escaping,Java,Regex,Escaping,我在寻找特殊角色时遇到了一些问题。 我得到一个java.util.regex.PatternSyntaxException异常发生。 这可能与被视为特殊角色有关。 我不太擅长图案表达。有人能帮我正确地搜索转义角色吗 // I need to split the string at the "(" String myString = "Room Temperature (C)"; String splitList[] = myString.split ("("); // i

我在寻找特殊角色时遇到了一些问题。 我得到一个java.util.regex.PatternSyntaxException异常发生。 这可能与被视为特殊角色有关。 我不太擅长图案表达。有人能帮我正确地搜索转义角色吗

   // 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中使用一个额外的\来避免反斜杠,这意味着您总共需要两个:

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

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

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

String splitList[] = myString.split ("\\(");  
请尝试以下方法之一:

string.split("\\(");
string.split(Pattern.quote("("));
由于字符串拆分将正则表达式作为参数,因此需要正确转义字符。请参见Jon Skeet的文章:

尝试以下方法之一:

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

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

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

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

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

splitPattern.quote, 拆分\\Q\\E, 拆分\\, 拆分[]。 是正则表达式字符之一。为了逃避它,你可以使用

splitPattern.quote, 拆分\\Q\\E, 拆分\\, 拆分[]。
好的,非常感谢,很有效。好的,非常感谢,很有效。