2014-09-09 1 views
1

Я пытаюсь извлечь число в следующей строке:Сличитель не находя спички

09/29/2014

настоящее время я использую код:

Pattern p = Pattern.compile("([0-9]{2})/([0-9]{2})/([0-9]{4})"); 
Matcher m = p.matcher(startDatepicker); 

String startYear = m.group(3); 
String startMonth = m.group(1); 
String startDay = m.group(2); 

startDatepicker содержит: 09/29/2014

Тем не менее, я не получаю никаких совпадений. Я также попытался сбежать с косой чертой с \\, но это тоже не сработало.

Я что-то упустил?

Благодарим за помощь.

ответ

0

Перед тем, как могли получить доступ к совпавшие группы, вам нужно позвонить find() на согласовани, и убедитесь, что он нашел матч:

Pattern p = Pattern.compile("([0-9]{2})/([0-9]{2})/([0-9]{4})"); 
Matcher m = p.matcher(startDatepicker); 
if (!m.find()) { 
    return; 
} 
String startYear = m.group(3); 
String startMonth = m.group(1); 
String startDay = m.group(2); 

Вызов m.find() позиций сличитель на первом матче.

Demo.

0

Вам необходимо позвонить по телефону find(), чтобы пройти через свои группы поиска.

Pattern p = Pattern.compile("([0-9]{2})/([0-9]{2})/([0-9]{4})"); 
Matcher m = p.matcher(startDatepicker); 
while (m.find()) { 
    ... 
} 

В find() метод ищет вхождения регулярного выражения на входе передается p.matcher(). Если можно найти несколько совпадений, этот метод найдет первый, а затем перейдет к следующему совпадению для каждого последующего вызова.