Как я могу получить содержимое между датами, используя регулярные выражения Java

#java #regex

#java #регулярное выражение

Вопрос:

Приведенный ниже код не дал мне содержимого между датами. можете ли вы мне помочь.

 String res="05/22/2014 03:22:39.288 ffff gggg kkkkkk lllllll ssss 05/22/2014 03:22:39.288 oooooo ppppp qqqq rrrrrr sss 05/22/2014 03:22:39.378 mmmmmm nnn oooo ";   

String regEx="((0?[1-9]|1[012])/(0?[1-9]|[12][0-9]|3[01])/((19|20)\d\d).*([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].[\d]*)(.*?)((0?[1-9]|1[012])/(0?[1-9]|[12][0-9]|3[01])/((19|20)\d\d).*([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].[\d]*)?";

Matcher matcher = Pattern.compile(regEx).matcher(res);

while(matcher.find())
{
  String group = matcher.group();
  System.out.println(group);
}
  

Даже я пытался ниже использовать разделение строк с помощью регулярного выражения в Java, но это дает только один результат:

 String regEx="((0?[1-9]|1[012])/(0?[1-9]|[12][0-9]|3[01])/((19|20)\d\d).*([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].([\d][^\s] )?)";
        String[] split = res.split(regEx);
  

Комментарии:

1. Откуда берется вводимый текст? Вам также нужно проверять даты?

2. только 22.05.2014 03:22:39.288 тип даты и времени, который мне нужно принять

Ответ №1:

Вы можете использовать это регулярное выражение для записи вашего текста:

 (?<=d{2}/d{2}/d{4} d{2}:d{2}:d{2}.d{3} )(.*?)(?=(?: d{2}/d{2}/d{4} d{2}:d{2}:d{2}.d{3}|$))
  

И возьмите ваш текст в группе # 1, т.е.

 matcher.group(1);
  

Рабочая демонстрация

Комментарии:

1. Спасибо. я не получил последнего, т.е. у него есть дата, но не последняя

2. он не работает, если в содержимом в нескольких строках, как показано ниже, 2 комментария

3. 22.05.2014 03:22:39.288 ооооо ppppp qqqq rrrrrr sss

4. 23.08.2014 n03:22:39.345 mmmmmm nnn ooooo

5. Поскольку 05/22/2014 03:22:39.288 oooooo ppppp qqqq rrrrrr sss это дает: oooooo ppppp qqqq rrrrrr sss

Ответ №2:

Причина, по которой вы получаете только один результат при разделении, заключается в том, что оператор * является жадным в регулярном выражении. Прочтите это, это хороший материал: http://www.regular-expressions.info/repeat.html