За последние 24 часа нас посетили 19777 программистов и 1694 робота. Сейчас ищут 1848 программистов ...

До идентификатора или конца текста

Тема в разделе "Регулярные выражения", создана пользователем kostyl, 11 июн 2009.

  1. kostyl

    kostyl Guest

    Привет всем. Подскажите пожалуйста. Надо выбрать все символы от [ до ] или до конца текста.
    Пробую что то типа /(\[)(.*?)((\[)|)/iums ,но чё-то не выходит. Заранее благодарю.
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    ms ?
    Два противоречивых режима сразу в одной строке?

    Регулярка простая:
    Код (Text):
    1. /\[(.+?)\]?/is
     
  3. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    скорее
    Код (Text):
    1. #\[(.+?)(?:\]|$)#is
     
  4. kostyl

    kostyl Guest

    Mr.M.I.T.
    нет, $ это до конца строки...
     
  5. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
     
  6. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Mr.M.I.T.
    Символа альтернативы я избегаю, когда можно обойтись без него (а в данном случае это можно).

    До конца текста, модификатор s указан.
     
  7. kostyl

    kostyl Guest

    Блин. Тут кое что посложнее получается. Надо выбрать из текста все куски [(.*?)] включая и эти квадратные скобки или до конца текста, если правая не закрыта, и к этим куска применить функцию обратного вызова к таким фрагментам, а остальную часть оставить как есть.
    PHP:
    1.  
    2. <?php
    3. preg_replace_callback('#(.*?)(\[)(.*?)(?:(\])|$)(.*?)#is', array($this, 'RCallback'), $sText);
    4.  
    5. function RCallback($arMatches)
    6. {
    7.   return $arMatches[1] . parent::Strope($arMatches[2] . $arMatches[3] . $arMatches[4], FALSE) .  $arMatches[5];
    8. }
    9.  
    Не пашет, падло...[/code]
     
  8. kostyl

    kostyl Guest

    Торможу, простите...