Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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中的正则表达式:str.replace(“\s+”,“”的错误_Java_Regex - Fatal编程技术网

java中的正则表达式:str.replace(“\s+”,“”的错误

java中的正则表达式:str.replace(“\s+”,“”的错误,java,regex,Java,Regex,为什么Java1.7给了我下面这行的错误 String str2 = str.replace("\s+", " "); 错误: Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ ) 据我所知\s+是一个有效的正则表达式。不是吗 ,但\s不是有效的字符串文字。逃离\ 如StrugRePosiCalScript所建议的,CharSequence并不认为您提供的参数是正则表达式。因此,即使您让程序进

为什么Java1.7给了我下面这行的错误

String str2 = str.replace("\s+", " ");
错误:

Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )   
据我所知\s+是一个有效的正则表达式。不是吗

,但\s不是有效的字符串文字。逃离\

如StrugRePosiCalScript所建议的,CharSequence并不认为您提供的参数是正则表达式。因此,即使您让程序进行编译,它也不会执行您希望它执行的操作。查看StringreplaceAllString,String.

,这是第一个问题

第二个问题是,根据定义,\s在Java字符串文本中不是有效的转义序列

这意味着您想要的可能是\\s+

但即便如此,.replace也不会将其视为正则表达式。您必须改用.replaceAll:

但还有另一个问题。你似乎经常使用它。。。因此,请改用模式:

进一步说明:

如果您只想替换第一个匹配项,则使用.replaceFirst;字符串有,模式也有 当在字符串上.replace{First,All}时,将为每次调用重新编译一个新模式。如果你必须做重复的匹配,请使用模式!
还有一个问题,不是吗。replace不接受正则表达式,只接受文本。。。
String str2 = str.replace("\\s+", " ");
s.replaceAll("\\s+", "");
private static final Pattern SPACES = Pattern.compile("\\s+");

// In code...

SPACES.matcher(input).replaceAll("");