[英]Why does lookingAt return true for lookArounds while matches return false
[英]Why does “3.5”.matches(“[0-9]+”) return false?
我使用String.matches(String regex)
来查找字符串是否与regex表达式匹配
从我的角度来看,正则表达式regex="[0-9]+"
表示一个字符串,其中至少包含一个介于0到9之间的数字
但是,当我调试"3.5".matches("[0-9]+")
它将返回false。
那么怎么了?
matches
确定正则表达式是否与整个字符串匹配。 如果字符串包含匹配项,则不会返回true
。
要测试字符串是否包含与给定正则表达式的匹配项,请使用Pattern.compile(regex).matcher(string).find()
。
(您的正则表达式[0-9]+
会匹配任何只包含0到9之间的数字,并且至少包含一位数字的字符串。它与任何实数都不是魔术匹配。如果您要匹配的任何实数,例如看Javadoc中的Double.valueOf(String)
,它指定了用于验证双精度的正则表达式。该正则表达式允许使用十六进制输入,NaN和无穷大,但应该可以让您更好地了解所需的东西。
或者,编辑正则表达式,使其直接匹配包含一个或多个数字的任何字符串,例如.*[0-9]+.*
将完成此工作。
如果要匹配十进制数字,则正则表达式必须为\\d*\\.?\\d+
。 如果还需要负片,则\\-?\\d*\\.?\\d+
。
.
不是0-9
并且matches
测试整个字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.