Есть предложение:"Я родился 02.08.1996. А мой брат 09.03.2000". Если строка содержит число, месяц и год - нужно вернуть true; если нет - то false. Вот мой код. В регулярных выражениях я очень слаб. Что нужно исправить в второй строке?
public static void date(String s) {
Pattern p = Pattern.compile("/([0-2]\\d|3[01])\\.(0\\d|1[012])\\.(\\d{4})/");
Matcher m = p.matcher(s);
boolean b = m.matches();
System.out.println(b);
}
Как минимум, в Вашем коде проблема в том, что Вам нужно проверить, содержится ли в одной строке другая строка (соответствующая заданному регулярному выражению), Вы же, вызывая метод matches(), проверяете равенство строк.
Я бы реализовал это вот так:
String s = "Я родился 02.08.1996. А мой брат 09.03.2000";
Pattern p = Pattern.compile("[\\d]{2}.[\\d]{2}.[\\d]{4}");
Matcher m = p.matcher(s);
boolean b = m.find();
System.out.println(b);
UPD. Подробнее про саму регулярку[\\d]{2}.[\\d]{2}.[\\d]{4}:
[\\d]{2} – два цифровых символа;. – точка;[\\d]{2} – два цифровых символа;. – точка;[\\d]{4} – четыре цифровых символа.UPD 2. Регулярка для проверки дат формата DD.MM.YYYY:
^(0?[1-9]|[12][0-9]|3[01]).(0?[1-9]|1[012]).\d{4}$
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости