Регулярное выражение - все, кроме последнего совпадения - PullRequest
1 голос
/ 02 сентября 2010

У меня есть следующий бит HTML:

<p><a href="http://vimeo.com/13114334" title="Grain & Gram: Nick Sambrato, Printmaker"><img src="http://b.vimeocdn.com/ts/747/476/74747630_200.jpg" alt="Grain & Gram: Nick Sambrato, Printmaker" /></a></p>
<p>Read the full interview with Nick Sambrato, Printmaker here:<br /><br /><a href="http://grainandgram.com/nicksambrato/" target="_blank" rel="nofollow">grainandgram.com/nicksambrato/</a></p>
<p>Cast: <a href="http://vimeo.com/grainandgram" style="color: #2786c2; text-decoration: none;">Grain & Gram</a></p>

Моя цель - выделить последний набор тегов абзаца. Я пытаюсь это сопоставить все между тегами абзаца. Я надеялся, что получу три результата и смогу манипулировать данными.

Я попробовал следующее регулярное выражение:

<p\b[^>]*>(.*?)<\/p>

Соответствует только первому набору тегов абзаца. Как мне сделать так, чтобы он совпадал с первыми двумя?

Спасибо

Обновление: Я думал об этом неправильно. Я не всегда могу предположить, что перед текстом Cast мне понадобится X информации. Однако я могу предположить, что Cast будет последним извлеченным абзацем. Итак, пересмотренный вопрос: Как я могу сопоставить все, кроме последнего абзаца? Другими словами, как мне сопоставить все до " Cast:"?

1 Ответ

1 голос
/ 02 сентября 2010

Я думаю, вам просто нужно сказать, что вы хотите несколько из них:

(<p\b[^>]*>(.*?)<\/p>)*

Или вы можете использовать свое исходное регулярное выражение и использовать preg_match_all и выбрать последний элемент.

РЕДАКТИРОВАТЬ ОТВЕТ : Как насчет (<p\b[^>]*>(.*?)<\/p>)*<p>Cast?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...