我正在尝试提出一个java正则表达式,它将匹配2个3位小数的数字,并且不匹配任何超过3的十进制数。
这是我的正则表达式
[0-9]{2}[.][0-9]{3}
匹配41.51778000
和18.740
但我只希望它匹配正好有3位小数的数字,而不是匹配超过3位数的数字
答案 0 :(得分:1)
您必须在任何一方使用字边界来阻止意外匹配:
\b[0-9]{2}[.][0-9]{2,3}\b
在Java中它将是:
\\b\\d{2}\\.\\d{2,3}\\b
答案 1 :(得分:1)
你需要让正则表达式匹配结束并开始。
^[0-9]{2}[.][0-9]{3}$
答案 2 :(得分:1)
您可以调用Matcher#matches
或String.matches
,而不是Matcher#find
来匹配整个String
。
否则,您可以添加^
并将$
附加到您的模式,以分隔输入的开始和结束。
最后,如果需要调用,可以使用\\D
或\\b
或\\w
等方式围绕您的模式,以分别匹配非数字,字边界或其周围的空格。 find
在包含多个模式实例的输入上。