Найти n совпадение и заменить

Тема в разделе "Регулярные выражения", создана пользователем RedRabbit, 26 фев 2013.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. RedRabbit

    RedRabbit

    Регистр.:
    11 июл 2008
    Сообщения:
    608
    Симпатии:
    251
    Есть текст:
    текст <BR>
    текст <BR>
    текст <BR>
    текст <BR>

    Нужно найти третий <BR> и заменить на пусто.
    Помогите составить:)
     
  2. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.039
    найти
    Код:
    \A([^<]*<BR>[^<]*<BR>[^<]*)<BR>
    заменить на
    $1
     
    RedRabbit нравится это.
  3. RedRabbit

    RedRabbit

    Регистр.:
    11 июл 2008
    Сообщения:
    608
    Симпатии:
    251
    А что такое вначале \A обозначает?
     
  4. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.039
    \A - начало многострочного текста (или начало файла)
    \Z - соответственно конец

    \A - имеет смысл если у тебя в тексте <BR> может быть более 5ти раз.

    если более 5ти и без \A то будет заменять каждый третий <BR>, а не только первый
     
    RedRabbit нравится это.
  5. RedRabbit

    RedRabbit

    Регистр.:
    11 июл 2008
    Сообщения:
    608
    Симпатии:
    251
    Хм. В зебройде что-то не работает(
     
  6. xpert13

    xpert13 <(*_*)>

    Moderator
    Регистр.:
    7 ноя 2008
    Сообщения:
    182
    Симпатии:
    456
    Если в Зеброиде, то так попробуй:

    Найти: (.*?<BR>.*?<BR>.*?)<BR>(.*)
    Заменить на: \1\2
     
    RedRabbit нравится это.
  7. RedRabbit

    RedRabbit

    Регистр.:
    11 июл 2008
    Сообщения:
    608
    Симпатии:
    251
    А как удалить, каждый второй <BR>?
    И что значит \1\2?
    Уж извините за возможно глупые вопросы, просто гугол не дает внятные ответы мне сейчас:(
     
  8. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.039
    \1 - вставляется первое то что у тебя в регулярке выделено скобками ()
    \2 - вторые скобки
    и тд )))
    иногда (не во всех языках) используется обозначение как $1 что соответствует \1

    для замены каждого второго br попробуй сделать так

    Найти: <BR>([^<]*)<BR>
    Заменить на: <BR>\1
     
    RedRabbit нравится это.
  9. h_hogan

    h_hogan Создатель

    Регистр.:
    8 мар 2013
    Сообщения:
    39
    Симпатии:
    2

    Не будет работать если в тексте будут помимо <BR> другие тэги, например:

    текст <BR>
    <b>текст</b> <BR>
    текст <BR>
    текст <BR>

    будет работать такая регулярка
    Найти: <BR>(.*?)<BR>
    Заменить на: <BR>\1
     
Статус темы:
Закрыта.