我正在尝试匹配数字模式。前两位数字为2
和5
。可能有更多数字,例如25
,253
,2599
,255
为此,我写了
Pattern myPattern = Pattern.compile("[2][5]*");
if(myPattern.matcher("25").matches()) {
}
if(myPattern.matcher("253").matches()) {
}
但它始终返回false
。我不确定我的模式有什么问题。
答案 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*")
或者你小心使用
String.startsWith("25")