Web-мастер: курс молодого бойца

Ошибка в регулярном выражении

   

 Добавлено 2007-12-26 11:40:02
nobody


Сообщений: 104
Зарегистрирован: 09.11.2007

Цитировать
Есть регурное выражение:
/(?<=<table[^>]*>[\s]*<tr[^>]*>[\s]*(<td[^>]*>q<\/td>[\s]*)*)((<td[^>]*)(?!style=)([^>]*>q<\/td>[\s]*))(?=(<td[^>]*>q<\/td>[\s]*)*<\/tr>)/i
При обработке на сервере происходит ошибка:
Warning: preg_replace() [function.preg-replace]: Compilation failed: lookbehind assertion is not fixed length at offset 59
Похоже, ругается на
(<td[^>]*>q<\/td>[\s]*)*
в первой подмаске...

Если в первой подмаске убрать
?<=
то ошибки не происходит...
Наверх  Посмотреть профиль    

 Добавлено 2007-12-26 12:19:58
root
Администратор


Сообщений: 85
Зарегистрирован: 04.11.2007

Цитировать
Здесь используется положительный просмотр назад
(?<=<table[^>]*>[\s]*<tr[^>]*>[\s]*(<td[^>]*>q<\/td>[\s]*)*)

Цитата
Шаблоны, используемые при просмотре вперед, могут иметь переменную длину; они могут содержать, например, . и +. Вследствие этого им могут соответствовать самые различные тексты.
Несколько иная ситуация при просмотре назад. Обычно требуется, чтобы шаблоны, используемые при просмотре назад, имели фиксированную длину. Это ограничение налагается почти во всех реализациях регулярных выражений.

Регулярные выражения. Урок 9. Просмотр вперед и назад
Наверх  Посмотреть профиль   Сайт автора  

 Добавлено 2013-02-05 05:22:36


Цитировать
Phneomeanl breakdown of the topic, you should write for me too!
Наверх Незарегистрированный пользователь  

 Добавлено 2013-02-06 20:40:40


Цитировать
rnnHbB <a href="http://husuftvqanbz.com/">husuftvqanbz</a>
Наверх Незарегистрированный пользователь  
   
Быстрый ответ
 
Цвет шрифта: Закрыть все теги
Сообщение
Защитный код