[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отрицание слова
Argentum
Всем привет!

Представим себе, что есть вот такой текст:

Код
zero <b>one</b> two <i>three</i> <b>four</b> five


Ставится задача вытащить всё, что находится внутри тэгов <b>..</b>.

Пробуем применить функцию preg_match со следующим шаблоном поиска:

Код
/<b>(.+)+<\/b>/


Вместо того, чтобы выделить два вхождения текста в <b>..</b>. функция констатирует единственное вхождение - от первого <b> до второго </b>, т.е.

Код
one</b> two <i>three</i> <b>four


Напрашивается вывод: вместо (.+) в шаблоне надо использовать некое выражение, которое говорит примерно следующее: "должны попадаться любые символы, но только не такая последовательность как </b>".
Я знаю, как вводить отрицание отдельного символа или класса символов. Но я никак не могу въехать, как сделать отрицание последовательности символов sad.gif
Ткните пальцем, пожалуйста... А то уже замучался.



Спустя 12 минут, 1 секунда (6.05.2009 - 17:42) twin написал(а):
Тыкаю - ?

Спустя 2 минуты, 7 секунд (6.05.2009 - 17:44) twin написал(а):
Код
/<b>([^<]+?)<\/b>/

Спустя 50 минут, 5 секунд (6.05.2009 - 18:34) Sylex написал(а):
Argentum
жадность отменить просто - или U в конце, или /<b>(.+?)</b>/ и юзать preg_match_all smile.gif

Спустя 3 часа, 14 минут, 16 секунд (6.05.2009 - 21:48) Grazor написал(а):
PHP
'/(?:<b>(.+)<\/b>)*/'

или так

Спустя 29 минут, 38 секунд (6.05.2009 - 22:18) Sylex написал(а):
Grazor
объясни свою регулярку smile.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.