如何在两个指定文本之间查找字符串

时间:2015-06-09 10:57:58

标签: perl find

我有像这样的HTML代码

<html>
<body>
<a href="one">frist</a>
<a href="two">second</a>
<a href="three">third</a>
<a href="four">fourth</a>
</body>
</html>

我想创建一个获取此代码并在

之间打印字符串的perl脚本
<a href="

">

对于此代码,它将是

one
two
three
four

我该怎么做? 抱歉我的英文不好

2 个答案:

答案 0 :(得分:0)

像这样使用HTML::LinkExtor

use strict;
use warnings;

use HTML::LinkExtor;

my $extor = HTML::LinkExtor->new;
$extor->parse_file(\*DATA);

for ( $extor->links ) {
  my ($tag, $att, $val) = @$_;
  print $val, "\n" if $tag eq 'a' and $att eq 'href';
}

__DATA__
<html>
<body>
<a href="one">frist</a>
<a href="two">secnod</a>
<a href="three">thrid</a>
<a href="four">furoth</a>
</body>
</html>

<强>输出

one
two
three
four

答案 1 :(得分:-1)

这不是解析HTML文件的正确方法,但对于您的给定数据,此代码将为您提供所需的输出:

use warnings;
use strict;

my $file = $ARGV[0];
open my $fh, "<", $file or die $!;

while ( my $line = <$fh> ) {
    chomp $line;
    if ( $line =~ m/a href="(.+)"(.*)/g ) {
        print "$1\n";
    }
}

数据

<html>
<body>
<a href="one">frist</a>
<a href="two">second</a>
<a href="three">third</a>
<a href="four">fourth</a>
</body>
</html>

<强>输出

one
two
three
four