用于正则表达式的Java API 声明\s将与空白匹配。因此,正则表达式\\s\\s应匹配两个空格。Pattern whitespace = Pattern.compile("\\s\\s");matcher = whitespace.matcher(modLine);while (matcher.find()) matcher.replaceAll(" ");这样做的目的是用单个空格替换两个连续空格的所有实例。但是,这实际上不起作用。我是否对正则表达式或“空白”一词有严重的误解?
3 回答

翻过高山走不出你
TA贡献1875条经验 获得超3个赞
是的,您需要获取matcher.replaceAll()的结果:
String result = matcher.replaceAll(" ");
System.out.println(result);

九州编程
TA贡献1785条经验 获得超4个赞
当我向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的代码,正如该问题的公认答案所指出的那样。”
添加回答
举报
0/150
提交
取消