Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Все, кроме определенной последовательности символов
 
 автор: yuk   (24.11.2007 в 00:01)   письмо автору
 
 

Если надо исключить какой-нибудь один символ, используется [^символ], а если нужно проверить, чтоб не было какого-нибудь сочетания? Например, все, кроме <table ?

   
 
 автор: Unkind   (24.11.2007 в 00:27)   письмо автору
 
   для: yuk   (24.11.2007 в 00:01)
 

Скажите для какой цели. Регулярного выражения для общего случая тут не сделаешь.

   
 
 автор: yuk   (24.11.2007 в 00:43)   письмо автору
 
   для: Unkind   (24.11.2007 в 00:27)
 

Есть код типа:
<div...>
...
текст
...
<div...>
...
</div>
...
</div>

Отталкиваясь от известного текста, нужно извлечь эти два div-a.
Предполагал сделать это выражением типа:

"/<div(что угодно но не <div)текст(что угодно но не</div>)</div>(что угодно, но не</div>)</div>/"

   
 
 автор: Unkind   (24.11.2007 в 00:56)   письмо автору
 
   для: yuk   (24.11.2007 в 00:43)
 

Попробуйте это:

<?php
$string 
'<div> ... text ... <div> !!! </div> ... </div>';

if( 
preg_match('#<div.*?>(.*?text.*?<div>(.*?)</div>.*?)</div>#is'$string$m) )
{
    
print_r$m );
}
?>

   
 
 автор: exp   (24.11.2007 в 03:48)   письмо автору
 
   для: yuk   (24.11.2007 в 00:43)
 

или такое похоже на то что нужно
<?
$txt 
'<div>
test<div>
text text </div>
end text
</div>' 
;

$pattern '#(?:</?div[^>]*>)(.+?)(?=</?div[^>]*>)#is';

preg_match_all($pattern$txt$out) ; 
print_r($out);

   
 
 автор: kasmanaft   (24.11.2007 в 15:22)   письмо автору
 
   для: yuk   (24.11.2007 в 00:43)
 

"не <div>" можно записать вот так: ((?!<div>).)*
Остальное аналогично...

   
 
 автор: udpn   (25.11.2007 в 14:10)   письмо автору
 
   для: kasmanaft   (24.11.2007 в 15:22)
 

Имхо версия с минимальным квантификатором - самое то. Главное, пхп их поддерживает )

Помню как было нужно искать {# (все кроме #}) #}
без минимальных квантификаторов /\{\#(([^\#]|\#+[^\}\#])*\#*)\#\}/
с ними /\{\#.*?\#\}/

Да, между прочим у автора кажись рекурсивная конструкция. Если надо разбирать таковую, тут уж только перл в помощь )

   
 
 автор: Unkind   (25.11.2007 в 14:58)   письмо автору
 
   для: udpn   (25.11.2007 в 14:10)
 

В какую еще помощь? К чему Вы упомянули Perl? Просто так или есть причина?

   
 
 автор: kasmanaft   (25.11.2007 в 15:53)   письмо автору
 
   для: udpn   (25.11.2007 в 14:10)
 

>> Имхо версия с минимальным квантификатором - самое то. Главное, пхп их поддерживает )
>> . . . .
>> Да, между прочим у автора кажись рекурсивная конструкция. Если надо разбирать таковую, тут уж только перл в помощь )

Их пхп тоже поддерживает.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования