matches检查整个字符串是否与使用的正则表达式匹配,并且由于该正则表达式只有一部分可以匹配
false,因此您将得到结果。
解决方法是
.*在正则表达式的开头和结尾处添加内容,以使其与匹配的子字符串之前或之后的部分匹配。
textWithTime.matches(".*\d\d?:\d\d.*");但是此解决方案必须遍历字符串的所有字符才能对其进行评估。
更好的方法是使用类中的
find()方法,
Matcher该方法将在第一个匹配项后停止迭代(或者
false在找不到正则表达式匹配项的情况下返回)。
Pattern p = Pattern.compile("\d\d?:\d\d");Matcher m = p.matcher(textWithTime);if (m.find()){ System.out.println("MATCH");} else { System.out.println("NO MATCH");}


