首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java replaceAll和'+‘匹配

java replaceAll和'+‘匹配
EN

Stack Overflow用户
提问于 2011-07-09 00:21:41
回答 3查看 357关注 0票数 0

我有一些代码设置来删除标题中单词之间的多余空格

代码语言:javascript
运行
复制
String formattedString = unformattedString.replaceAll(" +"," ");

我对这种正则表达式的理解是,它将在停止之前匹配尽可能多的空格。但是,我输出的字符串并没有以任何方式改变。有没有可能它一次只匹配一个空格,然后用一个空格替换它?replaceAll方法有没有什么东西会改变这种类型的匹配在这里的工作方式呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-09 00:28:56

更好的方法可能是使用"\\s+"来匹配所有可能的空格字符。

编辑

另一种方法可能是提取"\\b([A-Za-z0-9]+)\\b"的所有匹配项,然后使用空格将它们连接起来,这样您就可以删除除有效单词和数字之外的所有内容。

如果需要保留标点符号,请使用"(\\S+)",它将捕获所有非空格字符。

票数 1
EN

Stack Overflow用户

发布于 2011-07-09 00:29:57

你确定你输入的是空格而不是制表符?下面的代码在空格上更具“侵略性”。

代码语言:javascript
运行
复制
String formattedString = unformattedString.replaceAll("\\s+"," ");
票数 0
EN

Stack Overflow用户

发布于 2011-12-14 04:21:38

所有响应都应该有效。

两者:

代码语言:javascript
运行
复制
String formattedString = unformattedString.replaceAll(" +"," ");

代码语言:javascript
运行
复制
String formattedString = unformattedString.replaceAll("\\s+"," ");

也许您的unformattedString是一个多行表达式。在这种情况下,您可以实例化一个模式对象

代码语言:javascript
运行
复制
String unformattedString = "  Hello \n\r\n\r\n\r     World";
Pattern manySpacesPattern = Pattern.compile("\\s+",Pattern.MULTILINE);
Matcher formatMatcher = manySpacesPattern.matcher(unformattedString);
String formattedString = formatMatcher.replaceAll(" ");
System.out.println(unformattedString.replaceAll("\\s+", " "));

或者也许unformattedString有特殊的字符,在这种情况下,你可以在编译方法中使用模式标志。示例:

代码语言:javascript
运行
复制
Pattern.compile("\\s+",Pattern.MULTILINE|Pattern.UNIX_LINES);

代码语言:javascript
运行
复制
Pattern.compile("\\s+",Pattern.MULTILINE|Pattern.UNICODE_CASE);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6627399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档