2012-04-23 3 views
3

У меня есть журнал приложений с отметками времени от 01-24 (вместо 00-23), я пытаюсь выполнить поиск и заменить «24» на «00», напримерregex изменить значение времени за полночь

15.03.2012 24:59:58 - SIRENG INFO com.app.funnction.info 
15.03.2012 01:01:02 - SIRENG INFO com.app.funnction.moreinfo 

Если вернуться

15.03.2012 00:59:58 - SIRENG INFO com.app.funnction.info 
15.03.2012 01:01:02 - SIRENG INFO com.app.funnction.moreinfo 

до сих пор я получил

([0-9+]+).([0-9]+).([0-9\.$]+) ([0-9]+):([0-9]+):([0-9]+)

+0

Я люблю делить эту ссылку для тех, кто возникли проблемы с http://gskinner.com/RegExr/ создания в реальное время регулярного выражения Regex просто скопировать текст в окно и смотреть его пойти как вы создаете регулярное выражение. – dc5553

+0

Также хорошее правильное правило, чтобы следовать за вашим регулярным выражением как можно более конкретным, т.е. первый номер идет не дальше, чем 2 справа? поэтому используйте [0-2] не [0-9], а не убийцу в этой ситуации, просто полезно практиковать, чтобы использовать это всегда. – dc5553

+2

Я отредактировал ваш вопрос (вы хотите изменить «24» на «00», а не «23»). Но остается один вопрос: уверены ли вы, что время '24: nn: nn' не имеет вчерашней даты по сравнению с' 00: nn: nn'? –

ответ

1

Искать й является регулярное выражение

([0-9]+\.[0-9]+\.[0-9]{4}) 24:([0-9]+:[0-9]+) 

или если shorthand character classes поддерживаются вашим регулярных выражений, вы можете использовать это регулярное выражение

(\d\d\.\d\d\.\d{4}) 24:(\d\d:\d\d) 

и заменить его

$1 00:$2 
  • $ 1 = первая группа: ([0-9]+\.[0-9]+\.[0-9]{4}) будет соответствовать 15.03.2012
  • $ 2 = вторая группа: ([0-9]+:[0-9]+) будет соответствовать 59:58
+0

Спасибо, за отзыв. – user1351240

Смежные вопросы