На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
  
    > Регулярные выражения
      имеются такие строчки

      ^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

      надо вытянуть дату время и если есть коммент.
      вот как я это пытаюсь сделать

      ExpandedWrap disabled
         
        <?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>';
        }
        ?>


      те строки что закоментированны прекрасно все делают, но как сделать так чтобы было всего одно регулярное выражение ???
        Для начала - PCRE, Регулярные выражения, Часть I + Регулярные выражения, Часть II
        О POSIX лучше забудь как о страшном сне :)
          Держи:
          Цитата
          ((.*)((\d\d)\/(\d+)\/(\d+))+(.*)((\d\d):(\d+):(\d+))+((.*)(@Comment:\s(.*))+)*)

          Приход:
          $2 - мусор перед датой
          $3 - дата (полная со слешами без скобок и т.п.)
          $4 - день
          $5 - месяц
          $6 - год
          $7 - мусор между датой и временем
          $8 - время (полное с двоеточием)
          $9 - часы
          $10 - минуты
          $11 - секунды
          $13 - коммент с мусором впереди
          $14 - сам мусор (тот что перед комментом)
          $15 - ну и сам текст комента

          При работе:
          - не важно какой мусор и где
          - не важно есть ли скобки у даты и времени
          - не важно есть ли комент в строке

          Что бы всё правильно работало - нужно включить "жадный" режим...

          Напишешь - получилось или нет... Я тут тусуюсь редко, так что - лучше пиши сюда: Студенческий форум ЮРГТУ
            да все работает классно
            спасибо!
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0444 ]   [ 15 queries used ]   [ Generated: 27.04.24, 12:37 GMT ]