Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Look-ahead && Look-behind


Автор: MixerMsK 12.10.2009, 07:31
Приветствую. Задача: вытащить из текста конструкцию вида [_TEXT_] , причем только в том случае, если перед и после неё нет других фигурных скобок.
Поиск выполняю через preg_match_all , используя шаблон 
Код

/((?!])\[_\w*_](?<!\[))/
. 
В итоге из конструкции 
Цитата

[_TEXT1_][_TEXT2_]
 получаю обе записи, чего по условию быть не должно.
Поясните пожалуйста, что я делаю не так?

Заранее благодарю.

Автор: sTa1kEr 12.10.2009, 08:29
1. Условие (?! ) сопоставляется с последующими символами, а (?<! ) с предшествующими. У вас же все наоборот сделано.
2. Разберитесь с экранированием квадратных скобок.

Автор: MixerMsK 12.10.2009, 09:27
1. Спасибо!Ступил - всё заработало smile
2. В книжке по Perl`у "С верблюдом" автор утверждает, что экранировать нужно только первую, вторую - по желанию т.к. отдельно(если нигде не стоит открывающая) она экранирования не требует.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)