Как уже указывали Mat и maenu, использование регулярных выражений для синтаксического анализа HTML, по меньшей мере, подвержено ошибкам. Поскольку вы пометили свой вопрос тегом perl, я приведу небольшой пример использования HTML::TokeParser::Simple
, который, как мне кажется, является хорошим выбором для подобных манипуляций.
use strict;
use warnings;
use HTML::TokeParser::Simple;
my $parser = HTML::TokeParser::Simple->new( *DATA );
my $is_in_div;
while ( my $token = $parser->get_token ) {
if ( $token->is_start_tag( 'div' ) ) {
$is_in_div++;
next;
}
if ( $token->is_end_tag( 'div' ) ) {
$is_in_div--;
next;
}
print $token->as_is if not $is_in_div;
}
__DATA__
foobar<p>lol</p><div>something</div>blahblah
foobar<p>lol</p><div>more stuff<div>something</div></div>blahblah