2016-12-01 2 views
0

Я пытаюсь скрести в IFRAME с веб-сайта, но не могу показаться, чтобы очистить весь IFRAME (а не только атрибуты) (для пост цели я сделаю основной IFRAME)Получение весь IFRAME с регулярным выражением

<iframe src="http://google.com"></iframe> 

содержание каждого фрейма подвержен изменениям, поэтому необходимо регулярное выражение теги Iframe, как некоторые, я попытался с помощью следующей покупки не может заставить его работать:

<iframe[^>]*>(.*?)</iframe[^>]*>" 

ответ

0
(<iframe[^>]*>(.*?)</iframe[^>]*>) 

Ваш весь IFrame является в группе захвата 1. Некоторые реализации позволят вам использовать группу захвата 0 для получения всего соответствия. В других реализациях есть методы, чтобы получить весь согласованный текст.

1

Возможно, это связано с тем, что ваш iframe охватывает несколько строк. В этом случае вы должны знать, что . не соответствует символу новой строки, поэтому вы можете заменить его (?:.|\n) или [^<] или использовать флаг dot-all/single line, чтобы точка соответствовала всем символам. Также вы можете использовать это регулярное выражение вместо: <iframe[^>]*?(?:\/>|>[^<]*?<\/iframe>), которое также соответствует <iframe />

+0

Недостаточная ошибка в вашем регулярном выражении: вторая альтернатива в группе без имени должна начинаться с '>', чтобы вы захватили конечный символ открывающего тега. Кроме того, все элементы RegEx-parsing-HTML подвержены взрыву в случае вложенных тегов (например, ввод « bleh») – AlexR

+0

Я обновил свой ответ. –