猿问

空格匹配正则表达式-Java

用于正则表达式的Java API 声明\s将与空白匹配。因此,正则表达式\\s\\s应匹配两个空格。


Pattern whitespace = Pattern.compile("\\s\\s");

matcher = whitespace.matcher(modLine);

while (matcher.find()) matcher.replaceAll(" ");

这样做的目的是用单个空格替换两个连续空格的所有实例。但是,这实际上不起作用。


我是否对正则表达式或“空白”一词有严重的误解?


萧十郎
浏览 661回答 3
3回答

翻过高山走不出你

是的,您需要获取matcher.replaceAll()的结果:String result = matcher.replaceAll(" ");System.out.println(result);

九州编程

当我向Regexbuddy(正则表达式开发人员应用程序)论坛发送问题时,我得到了对\ s Java问题的更准确答复:“消息作者:Jan Goyvaerts在Java中,简写\ s,\ d和\ w仅包含ASCII字符。...这不是Java中的错误,而只是使用正则表达式时需要注意的许多事情之一。要匹配所有Unicode空格和换行符,可以在Java中使用[\ s \ p {Z}]。RegexBuddy尚不支持特定于Java的属性,例如\ p {javaSpaceChar}(与[\ s \ p {Z}]完全相同的字符匹配)。如果输入仅是ASCII,则\ s \ s将匹配两个空格。真正的问题在于OP的代码,正如该问题的公认答案所指出的那样。”
随时随地看视频慕课网APP
我要回答