// pattern 20xx/xx/xx, e.g. 2012/2/22
String Regex_Date_1 = "20\\d\\d/\\d{1,2}/\\d{1,2}";
String cell = "from 2011/7/31 to 2011/8/15 15:10-17:40,18:30-21:00";
System.out.println(cell);
System.out.println("--- a ---");
System.out.println(cell.matches(Regex_Date_1));
System.out.println("--- b ---");
Pattern p = Pattern.compile(Regex_Date_1);
Matcher m = p.matcher(cell);
while(m.find()){
System.out.println(m.group(0));
}
результаты:Почему string.matches и pattern.matches получают разные результаты?
from 2011/7/31 to 2011/8/15 15:10-17:40,18:30-21:00
--- a ---
false
--- b ---
2011/7/31
2011/8/15
Почему string.matches вернуться ложным? но pattern.matches могут получить совпадения?
спасибо, мой вопрос может быть исправлен -> System.out.println (cell.matches (". * (" + Regex_Date + "). *")); –
Я так не думаю. '. *' будет жадно соответствовать всем, поэтому остальное регулярное выражение будет проигнорировано. Вам нужно использовать '. *?', Чтобы правильно соответствовать тому, что вы хотите. – asenovm