Не работают обратные ссылки внутри регулярки. Код сделан на основе примера из книги, без обратных ссылок поставленную задачу решить нельзя, до этого ими не пользовался. Решил попробовать, а тут облом. Мой код: PHP: <? $message_y1 = "response and responsibility"; $message_n1 = "response and sensibility"; $message_y2 = "sense and sensibility"; $regexp = "/(sens|respons)e and \1ibility/Usi"; //\одинibility echo "<pre>"; preg_match($regexp,$message_y1,$matches); var_dump($matches); preg_match($regexp,$message_y2,$matches); var_dump($matches); preg_match($regexp,$message_n1,$matches); var_dump($matches); echo "</pre>"; ?> Ответ: Код (Text): array(0) { } array(0) { } array(0) { } Кто знает, в чём может быть проблема? Еще сразу вопрос... кто знает, как можно вызвать по обратной ссылке последнее вхождение, вхождение перед последним вхождением, вхождение после последнего вхождения? В PERL такое есть, а вот есть ли в PCRE не знаю.
Одинарные кавычки помогли, спасибо огромное! igordata, мне нужно, чтобы выполнялось условие, что следующий такой же, как предыдущий, а не произвольное совпадение
раз уж процитировал книгу, то надо бы уже и на оригинал линку: http://www.softtime.ru/dic/id_dic=134&id_group=3 самая полная и понятная из тех, что я нашёл на английском, ессно, обращаться сюда: http://php.net/manual/en/reference.pcre ... syntax.html
titch мне нужно, чтобы выполнялось условие, что следующий такой же, как предыдущий, а не произвольное совпадение я даже не понял что ты сейчас сказал. буду читать...
igordata Тебе нужно, к примеру, захватить теги <div> и </div>, но парсишь ты не HTML, а XML, где теги задает кто-то произвольно. Как поступишь? Вот тут и будут нужны обратные ссылку: <([a-z]+?)>(.*?)</\\1> Т.е условие второго зависит от того, что захватил первый.