回答
第一个单一的空白匹配之间的差异,而第二个匹配一个或多个空格。他们是所谓的正则表达式量词,和他们进行这样的比赛(从documentation拍摄):
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
我一直很喜欢他们如何分别描述每个量词的贪婪,不情愿和占有欲,然后对所有三个人说完全一样的话。 ;) – 2013-03-25 22:50:15
第一个正则表达式将匹配一个空白字符。第二个正则表达式将不情愿地匹配一个或多个空白字符。对于大多数用途来说,这两个正则表达式非常相似,除了第二种情况,正则表达式可以匹配更多的字符串,如果它阻止正则表达式匹配失败。从http://www.coderanch.com/t/570917/java/java/regex-difference
划伤单词“不情愿”。这个问题是关于'\ s +',而不是'\ s +?'就像另一个问题。 – 2013-03-25 23:13:08
这两个replaceAll
调用总是会产生相同的结果,无论x
是什么。然而,值得注意的是,两个正则表达式是不一样重要的是:
\\s
- 匹配单个空白字符\\s+
- 相匹配的一个或多个空格字符序列。
在这种情况下,它没有区别,因为您用空字符串替换所有内容(尽管从效率的角度来看最好使用\\s+
)。如果你用一个非空字符串替换,两者的行为会有所不同。
W.r.t您的第一行,如果x是“预订您的域名并获取\ n \ n \ n \ n \ n \ n在线今日”。两者会产生相同的结果吗? – user3705478 2016-12-15 10:01:26
@ user3705478两者都会产生相同的结果,即使在彼此之后会有多个空格。区别在于它处理的方式。如果你有一组(例如)3个空格直接跟随另一个\\ s +接受该组,并将其整体变成一个“”,而\\ s将自己处理每个空间。 – Daemun 2017-01-04 09:29:03
首先,您需要了解两个语句的最终输出将是相同的,即从给定字符串中删除所有空格。
然而x.replaceAll("\\s+", "");
将修剪的空间(如果串可具有多个连续空格)由于更高效的方式潜在更少不会因更换的事实该正则表达式\\s+
比赛1或多个空格一次,并用空字符串替换它们。
所以,即使你得到同样的输出都最好是使用:
x.replaceAll("\\s+", "");
- 1. \ s ++正则表达式
- 2. 正则表达式正则表达式正则表达式使用正则表达式,但不是与Python
- 3. java的正则表达式
- 4. S的正则表达式/ ^(*。):\ S * //
- 5. 写正则表达式表达的java
- 6. 正则表达式 - Java的
- 7. 正则表达式(正则表达式)
- 8. 正则表达式[\ S但不是[[\ S?
- 9. 正则表达式的Java
- 10. Css与正则表达式的编号
- 11. 正则表达式的正则表达式的Java字符串
- 12. 正则表达式到Java正则表达式 - 替换和Lambdas
- 13. PHP的preg_match和正则表达式的正则表达式
- 14. 正则表达式(正则表达式)
- 15. 正则表达式:简单的Java正则表达式问题
- 16. 正则表达式正则表达式返回的值正则表达式
- 17. 正则表达式小写
- 18. Java的正则表达式
- 19. Java的正则表达式
- 20. Python的正则表达式:“喜欢”正则表达式模式?
- 21. Java正则表达式5
- 22. Java正则表达式
- 23. 小vim正则表达式
- 24. Ruby正则表达式与正则表达式匹配
- 25. Mysql的正则表达式:匹配与正则表达式
- 26. PHP-MySQLi替换为正则表达式/正则表达式/正则表达式
- 27. java正则表达式行
- 28. 正则表达式
- 29. 电话号码正则表达式(正则表达式)在Python
- 30. ASP.Net正则表达式(%符号)正则表达式验证器
量词,他们读了。 – jn1kk 2013-03-25 22:01:36