正则表达式例外

时间:2015-07-08 15:14:45

标签: java regex

我正在尝试提出一个java正则表达式,它将匹配2个3位小数的数字,并且不匹配任何超过3的十进制数。

这是我的正则表达式

[0-9]{2}[.][0-9]{3}

匹配41.5177800018.740

但我只希望它匹配正好有3位小数的数字,而不是匹配超过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#matchesString.matches,而不是Matcher#find来匹配整个String

否则,您可以添加^并将$附加到您的模式,以分隔输入的开始和结束。

最后,如果需要调用,可以使用\\D\\b\\w等方式围绕您的模式,以分别匹配非数字,字边界或其周围的空格。 find在包含多个模式实例的输入上。