使用示例: 使用perl分析抓取到的网页的内容,需要某个div内的所有内容。但是该div内允许出现嵌套的div和其他html标签。
my $qiantao_div = qr{
(?{ local $openDiv = 0; })
(?>
(?:
# 常规字符
[^<>]+
# 其他标签
| (?: < (?> /? ) (?!div) [^>]+ > )
# 嵌套的div开头
| (?: <div [^>]* > ) (?{ $openDiv++ })
# 嵌套的div结尾
| (?: </div> ) (?(?{ $openDiv > 0 }) (?{ $openDiv-- }) | (?!) )
)*
)
(?(?{ $openDiv != 0 }) (?!))
}ix;
while(<>){
if (m{<div /s+ id="PrintTxt" /s* >/s* ($qiantao_div) /s*</div> }ix){
。。。。。。。
}
}
这里使用到了正则表达式的 固化分组、内前代码、否定顺序环视等。