java中的正则表达式:str.replace(“\s+”,“”的错误
为什么Java1.7给了我下面这行的错误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并不认为您提供的参数是正则表达式。因此,即使您让程序进
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("");