Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.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
да все работает классно
спасибо!

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)