模式匹配不匹配

时间:2014-08-31 11:38:16

标签: java regex

我正在尝试匹配数字模式。前两位数字为25。可能有更多数字,例如252532599255

为此,我写了

Pattern myPattern = Pattern.compile("[2][5]*");
if(myPattern.matcher("25").matches()) {
}

if(myPattern.matcher("253").matches()) {
}

但它始终返回false。我不确定我的模式有什么问题。

3 个答案:

答案 0 :(得分:3)

虽然您可以使用@avinashraj建议的正则表达式来解决这个问题,但我想建议使用String#startsWith提供更好的解决方案,您不需要在这里使用正则表达式:

if(myString.startsWith("25")) {
   //...
}

答案 1 :(得分:2)

你可以试试下面的正则表达式,

"25\\d*"

你的正则表达式[2][5]*出了什么问题,首先它与2匹配,然后它只与数字5匹配零次或多次。但是\d*匹配任何数字(0-9)零次或多次。

System.out.println("25".matches("25\\d*"));
System.out.println("253".matches("25\\d*"));

答案 2 :(得分:1)

尝试

String.matches("25\\d*")

enter image description here

或者你小心使用

String.startsWith("25")