首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中的正则表达式与\\s+

Java中的正则表达式与\\s+
EN

Stack Overflow用户
提问于 2013-03-26 05:59:34
回答 3查看 281.3K关注 0票数 103

下面两个表达式之间的区别是什么?

代码语言:javascript
复制
x = x.replaceAll("\\s", "");
x = x.replaceAll("\\s+", "");
EN

回答 3

Stack Overflow用户

发布于 2013-03-26 06:02:06

第一个匹配一个空格,第二个匹配一个或多个空格。它们是所谓的正则表达式量词,它们执行如下匹配(取自documentation):

代码语言:javascript
复制
Greedy quantifiers
X?  X, once or not at all
X*  X, zero or more times
X+  X, one or more times
X{n}    X, exactly n times
X{n,}   X, at least n times
X{n,m}  X, at least n but not more than m times

Reluctant quantifiers
X?? X, once or not at all
X*? X, zero or more times
X+? X, one or more times
X{n}?   X, exactly n times
X{n,}?  X, at least n times
X{n,m}? X, at least n but not more than m times

Possessive quantifiers
X?+ X, once or not at all
X*+ X, zero or more times
X++ X, one or more times
X{n}+   X, exactly n times
X{n,}+  X, at least n times
X{n,m}+ X, at least n but not more than m times
票数 94
EN

Stack Overflow用户

发布于 2013-03-26 06:04:31

首先,您需要了解两个语句的最终输出将是相同的,即删除给定字符串中的所有空格。

然而,x.replaceAll("\\s+", "");将是更有效的修剪空格的方法(如果字符串可以有多个连续的空格),因为由于正则表达式\\s+一次匹配一个或多个空格并将它们替换为空字符串的事实,没有替换的可能性更小。

因此,即使您从这两个命令中获得相同的输出,最好使用:

代码语言:javascript
复制
x.replaceAll("\\s+", "");
票数 11
EN

Stack Overflow用户

发布于 2013-03-26 06:02:42

第一个正则表达式将匹配一个空格字符。第二个正则表达式将不情愿地匹配一个或多个空白字符。对于大多数目的,这两个正则表达式非常相似,除了在第二种情况下,正则表达式可以匹配字符串的更多部分,前提是它可以防止正则表达式匹配失败。来自http://www.coderanch.com/t/570917/java/java/regex-difference

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15625629

复制
相关文章

相似问题

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