Регулярка "не слово"

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

4erepaha13

Полезный
Регистрация
20 Июн 2009
Сообщения
157
Реакции
18
Есть текст вида
бла-бла
<div id=1>
(user)
бла-бла
</div>
бла-бла
<div id=1>
(admin)
бла-бла
</div>
бла-бла
Какой регуляркой можно выдрать текст внутри дивов, но с проверкой: если не admin, то брать, если admin- то не брать (исключение совпадения заданного слова).

И второй вопрос побочный- как исключать тексты с известными границами начала и конца, но стоп слово находится произвольно внутри контента (а не сразу после открывающего дива как в первом примере).
 
Сам никогда не исспользую проверки в регуляторках, поскольку не самая лучшая идея. Лучше всего получить содержимое всех дивов а уж потом провести проверку штатными средствами.
PHP:
<?php
preg_mach_all("#<div id=1>(.+)</div>#isU", $text, $out);
unset($out[0]);
$i=0;
foreach ($out[1] as $mach){
 if ($mach == "(admin)") unset($out[1][$i]);
 $i++;
}

echo "<pre>";
print_r($out[1]);
echo "</pre>";
?>
 
PHP:
preg_match_all('#<div[^>]*>(((?!admin|mod[a-z]+?or).)*?)</div>#s',$text,$res);

внутренний субпаттерн - условие пропуска текста в div
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху