为了账号安全,请及时绑定邮箱和手机立即绑定

空格匹配正则表达式-Java

空格匹配正则表达式-Java

萧十郎 2019-10-08 11:00:34
用于正则表达式的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);


查看完整回答
反对 回复 2019-10-08
?
九州编程

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的代码,正如该问题的公认答案所指出的那样。”


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 598 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信