регулярные выражения и символ отрицания

mcpro

Новичок
регулярные выражения и символ отрицания

подскажите, плз. Есть регулярное выражение
PHP:
Адрес[^<td]*
Которое ищет вхождение Адрес после которого может быть что угодно, только не символы '<' ,' t' или 'd'
как его изменить, чтобы оно искало вхождение Адрес после которого может быть что угодно, только не символ '<td'
 

AmdY

Пью пиво
Команда форума
Ragazzo
а чё тут думать, твой вариант работает, это сервис вносит ошибку
 

Ragazzo

TDD interested
проверил дома..неа...на этом паттерне, при строке "Адрес <br /> <td>", выводит только "Адрес"
 

AmdY

Пью пиво
Команда форума
Автор оригинала: Ragazzo
проверил дома..неа...на этом паттерне, при строке "Адрес <br /> <td>", выводит только "Адрес"
а что по твоему ты должен видеть в браузере?
ай, точно, он валится на <, а мне показалось, что просто html теги там режутся
 

Ragazzo

TDD interested
Кстати эта нездоровая фигня, ну когда при "<" в браузер не выводится иногда меня бесит))ТС - паттерн вообщем правильный, вы когда примеры придумываете учитывайте то что < очень иногда опасная штука))
AmdY
тут конечно чето я забыл про "<" и завис надолго =))спс что напомнили)
 

Ragazzo

TDD interested
Короче слушай сюда, если в строке встретится такая хрень "<" которая у тебя присутствует вначале тега <br> то дальше регулярка валится и ничего тебе не выведет....понятно теперь..убери <br> поставь другие символы и увидишь что она работает....ну вот вам если уж на то пошло
preg_match('/Адрес[^(<td)]*/','Адрес br /> <td>',$pocket);
echo "<pre>";
print_r($pocket);
echo "</pre>";
 

Ragazzo

TDD interested
mcpro
Ты уничтожил мою веру в регулярки...будь ты проклят!шучу=) чето меня ето накаляет, но паттерн такой какой надо
 

Вурдалак

Продвинутый новичок
Чё вы тут обсуждаете? Паттерн /[^(<td)]/ означает любой символ, кроме «(», «)», «t» и «d».

PHP:
$pattern = '/Адрес(?!<td)/';
 

Ragazzo

TDD interested
Вурдалак
http://regexpr.ru/?pattern=%2F%C0%E4%F0%E5%F1%28%3F%21%3Ctd%29%2F&subject=%C0%E4%F0%E5%F1+%3Ctd+br++td
 

Вурдалак

Продвинутый новичок
А зачем так?
PHP:
$pattern = '/Адрес(.*?)(?:<td|$)/s';
Достаёшь выражение в первой скобке и всё.
 
Сверху