Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > RegExp > Регулярные выражения |
Автор: snedi 05.11.04, 20:15 |
имеются такие строчки ^92(21/35/2002)**&[21:50:20]@Comment: Text String ^-21/35/2002*$21:50:20 ^*21/35/2002*DX145&[21:50:20]@Comment: Text String надо вытянуть дату время и если есть коммент. вот как я это пытаюсь сделать <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> <?php $data_arr=array('^92(21/35/2002)**&[21:50:20]@Comment: Text String', '^-21/35/2002*$21:50:20', '^*21/35/2002*DX145&[21:50:20]@Comment: Text String'); for ($i=0; $i<=2; $i++) { // $date=eregi('(2)[0-9/]+', $data_arr[$i], $date_output); // $time=eregi('(2)[0-9]+(:)[0-9]+(:)[0-9]+', $data_arr[$i], $time_output); // $comment=eregi('(Comment)[[:print:]]+', $data_arr[$i], $comment_output); $s=eregi("[0-9/]{10}[^]*[][0-9]+(:)", $data_arr[$i], $ss); // echo $date_output[0].' '.$time_output[0].' '.$comment_output[0].'<br>'; // $comment_output=0; echo $ss[0].'<br>'; } ?> те строки что закоментированны прекрасно все делают, но как сделать так чтобы было всего одно регулярное выражение ??? |
Автор: SiMM 05.11.04, 20:54 |
Для начала - PCRE, Регулярные выражения, Часть I + Регулярные выражения, Часть II О POSIX лучше забудь как о страшном сне |
Автор: Mega 05.11.04, 23:55 |
Держи: Цитата ((.*)((\d\d)\/(\d+)\/(\d+))+(.*)((\d\d):(\d+):(\d+))+((.*)(@Comment:\s(.*))+)*) Приход: $2 - мусор перед датой $3 - дата (полная со слешами без скобок и т.п.) $4 - день $5 - месяц $6 - год $7 - мусор между датой и временем $8 - время (полное с двоеточием) $9 - часы $10 - минуты $11 - секунды $13 - коммент с мусором впереди $14 - сам мусор (тот что перед комментом) $15 - ну и сам текст комента При работе: - не важно какой мусор и где - не важно есть ли скобки у даты и времени - не важно есть ли комент в строке Что бы всё правильно работало - нужно включить "жадный" режим... Напишешь - получилось или нет... Я тут тусуюсь редко, так что - лучше пиши сюда: Студенческий форум ЮРГТУ |
Автор: snedi 06.11.04, 11:51 |
да все работает классно спасибо! |