Есть предложение:"Я родился 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}$
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть такой не непосредственной связанный с программированием вопрос, а косвенный
Решать ничего не надо! Зато объясните, почему результат в консоль не выводится??
Добрый вечер, есть не большая программа которую я могу запустить с помощью своего java кода данной конструкцией