一種選擇是使用pull語法分析器。這裏有一個HTML::TokeParser
的例子。它使用兩個循環,第一個循環用於查找評論的第一個外觀。它打印出找到的每個標籤,直到那裏。第二個遍歷所有標籤,直到第二次出現相同類型的評論,並且不打印任何東西。
#!/usr/bin/env perl
use warnings;
use strict;
use HTML::TokeParser;
my $p = HTML::TokeParser->new (shift);
while (my $token = $p->get_token) {
printf qq|%s|, $token->[0] =~ m/S|E|PI/ ? $token->[ $#$token ] : $token->[1];
if ($token->[0] eq q|C| && $token->[1] =~ m/(?i)MyComment/) {
## Here begins the comment.
while (my $token2 = $p->get_token) {
if ($token2->[0] eq q|C| && $token2->[1] =~ m/(?i)MyComment/) {
## Here ends the comment.
printf qq|%s|, $token2->[1];
last;
}
}
}
}
運行它喜歡:的script.pl
內容
perl script.pl htmlfile
國債收益率:
<html>
<head>
<title>Title</title>
</head>
<body>
<tbody>
<tr>
<td width="650">
<!--MyComment--><!--MyComment-->
</td>
</tr>
</tbody>
</body>
</html>
還有'HTML :: Parser'你可以看看,但我不知道它是否足夠滿足你的需求。取決於你想達到的目標。保持原樣,除了'a'標籤?如果你有3條評論呢? –