Трудности в правильной работе регулярного выражения

Статус
В этой теме нельзя размещать новые ответы.

krendelek007

Постоялец
Регистрация
26 Мар 2008
Сообщения
50
Реакции
8
Всегда были трудности с регулярными выражениями, поэтому прошу помощи.

Имеется исходный текст:
HTML:
word1 word1 word1 word1
word2 word2 word2 word2
<h4 class="cam-title">text1</h4>
word3 word3 word3 word3
word4 word4 word4 word4
<h4 class="cam-title">text2</h4>
<h4 class="cam-title">text3</h4>
word5 word5 word5 word5

Для преобразования до нужного вида использую следующую регулярку:
PHP:
$txt = ereg_replace("<h4 class=\"cam-title\">(.*)</h4>","",$txt);

В результате применения регулярного выражения получаю (результат не удовлетворяет:(
HTML:
word1 word1 word1 word1
word2 word2 word2 word2
word5 word5 word5 word5

А хотелось бы получить (результат удовлетворяет:(
HTML:
word1 word1 word1 word1
word2 word2 word2 word2
word3 word3 word3 word3
word4 word4 word4 word4
word5 word5 word5 word5

Может кто-то подскажет, как подкорректировать выражение для правильной обработки?
Заранее огромное спасибо.
 
PHP:
$txt = preg_replace("/<h4 class=\"cam-title\">(.*?)<\/h4>/","", $txt);
PS: пустые строки тоже надо будет удалять
 
PHP:
$txt = preg_replace("/<h4 class=\"cam-title\">(.*?)<\/h4>/","", $txt);
PS: пустые строки тоже надо будет удалять
Спасибо огромное! Работает.
Только я так и не понял, в чем собственно была ошибка моей записи ..
 
Забыл заэкранировать управляющий символ "/"
для заэкранирования перед ним поставлен обратный слеш "\"
Код:
<\/h4>/
 
Забыл заэкранировать управляющий символ "/"
для заэкранирования перед ним поставлен обратный слеш "\"
Код:
<\/h4>/
o_nix, вообще-то проблема в жадном квантификаторе была :)
 
Alix - в php regexp помещённый между /.../ переключается на "не жадный"
то есть будет выдавать минимальное соответствие ??


Блин честное слово я не заметил что в регексп "?" добавлен ... незаметный он какой то :D
 
Минимальное соответствие будет мапиться если добавить ? к .* (т.к. * - жадный квантификатор по умолчанию). Или как вариант добавить спец параметро(насколько я помню - /U, но не пробовал)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху