Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Непростая регулярка
 
 автор: serggo1   (16.10.2016 в 10:59)   письмо автору
 
 

Друзья, всем привет, пожалуйста, помогите составить регулярку.
Имею строки такого вида:

10:14(12:45)
22:28(01:53,18:16)(15:40)

с таким условием: если в строке одна пара скобок (как в первой), то результат это весь текст до открывающейся скобки и весь текст в скобках (кол-во символом может меняться), например: для первой строки - это "10:14" и "12:45"
если в строке две пары скобок, то результат - это текст в первых скобках и текст во вторых скобках, например как во второй строке: "01:53,18:16" и "15:40"

  Ответить  
 
 автор: Fart   (16.10.2016 в 12:25)   письмо автору
 
   для: serggo1   (16.10.2016 в 10:59)
 

$str = '10:14(12:25)
22:28(01:53,18:16)(15:40)
10:14(12:15)
10:25(12:35)
21:28(11:53,13:16)(11:40)';

preg_match_all("/[^\(\)\s]+\([^\(\)]+\)[^\(]|[^\(\)\s]+\(.+\)/", $str, $subst);

foreach($subst[0] as $k=>$v)
{
    if(preg_match("/\)\(/", $v))
    {        
        $v = preg_replace("/\)\(/", " и ", $v);        
        $v = preg_replace("/^[^\(\)]+\(|\).*$/", "", $v);        
                    
    }        
    else
    {
        $v = preg_replace("/\(/", " и ", $v);
        $v = preg_replace("/\).*$/", "", $v);
    }
    echo  $v."<br>";    
}


итог:

10:14 и 12:25
01:53,18:16 и 15:40
10:14 и 12:15
10:25 и 12:35
11:53,13:16 и 11:40

  Ответить  
 
 автор: serggo1   (16.10.2016 в 13:15)   письмо автору
 
   для: Fart   (16.10.2016 в 12:25)
 

Я Вам очень благодарен, большое спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования