Java正则表达式中的部分匹配
我编写了以下代码以仅匹配整数。然而,当给出像3.4这样的十进制数时,它与数字3匹配。如果一个数字不是像3.4那样的整数,有没有办法匹配整个字符串并以其他方式拒绝Java正则表达式中的部分匹配,java,Java,我编写了以下代码以仅匹配整数。然而,当给出像3.4这样的十进制数时,它与数字3匹配。如果一个数字不是像3.4那样的整数,有没有办法匹配整个字符串并以其他方式拒绝 Pattern e = Pattern.compile([0-9]+); Matcher m = e.matcher("3.4"); 您的问题非常令人困惑,但您可能希望使用以下方法来匹配带或不带小数的数字 Pattern e = Pattern.compile("\\d+(?:\\.\\d+)?"); @安德烈亚斯:你说得对-谢谢,
Pattern e = Pattern.compile([0-9]+);
Matcher m = e.matcher("3.4");
您的问题非常令人困惑,但您可能希望使用以下方法来匹配带或不带小数的数字
Pattern e = Pattern.compile("\\d+(?:\\.\\d+)?");
@安德烈亚斯:你说得对-谢谢,编辑在我的回答中-希望你没问题。@baao谢谢你的回答。但我只想匹配整数。baao的回答是:我只想匹配整数。这似乎与问题中的示例代码相矛盾,但这只是意味着问题的表述非常糟糕。当心!当你还没有调用
m.matches()
时,你怎么知道它匹配呢?我很确定他没有调用m.matches()。也许OP使用的是find()或group()?@Jeutnarg我猜OP认为非null的m
表示它匹配。--不能是group()
,因为如果未调用matches()
或find()
,则会引发IllegalStateException
。@Michael如果要使用find()
,则需要添加锚定:“^[0-9]+$”
。在您的情况下,我建议您使用matches()
。