我想从HTML源代码中获取一个字符串,实际上是一个YouTube链接视频ID。
放入字符串变量的HTML示例部分:
$string = 'etc... Your video, <a href="http://www.youtube.com/watch?v=1InOB234543">video name</a>, etc...';
我只想要整个HTML源代码中的视频链接ID。
我在Regex Widget中对此进行了测试,但我不知道如何将它放在Perl中:
/video, <a href="http://www.youtube.com/watch\?v=(.*)"/
我只想在两个单词模式之间添加一个字符串:
between 'Your video, <a href="http://www.youtube.com/watch?v='
and '">'
答案 0 :(得分:3)
if ($string =~ m{video, <a href="http://www\.youtube\.com/watch\?v=(.*)"}) {
$video_id = $1;
} else {
# pattern didn't match
}
请注意,我们使用{}
分隔符而不是通常的//
分隔符,因为该模式包含否则需要转义的斜杠。此外,www.youtube.com
中的句号需要转义,否则它们将被解释为通配符。
答案 1 :(得分:2)
my($afterv) = ($text =~ m!video, <a href="http://www\.youtube\.com/watch\?v=(.*)"!
答案 2 :(得分:2)
这使用来自CPAN的HTML::LinkExtractor,因此它将与包含多个链接的文档一起使用:
use strict;
use warnings;
use HTML::LinkExtractor;
my $input = q{etc... Your video, <a href="http://www.youtube.com/watch?v=1InOB234543">video name</a>, etc...};
my $extractor = HTML::LinkExtractor->new;
$extractor->parse(\$input);
my @ids = map {$_->{href} =~ /watch\?v=(.*)/ } @{ $extractor->links };