我有下面有两个anchor
的标签,输入到我的perl脚本的HTML页面:
<a href="link.html"> TITLE </a> <a href="link.html"> SUB TITLE </a>
我想提取我即仅需要从第一锚标记<a>
和第二锚标记<a>
文本短信应该被忽略唯一称号。这我只需要使用Perl的正则表达式的事情。
我试过以下的正则表达式,但它不是按预期工作:
<a[^>]*[^>]*>(?!.*a>.*)a>
整个剧本是这样的:
#!/usr/bin/perl
use strict;
use warnings;
my $str = '<a href="link.html"> TITLE </a> <a href="link.html"> SUB TITLE </a>';
my $res = $str =~ m/<a[^>]*[^>]*>(?!.*a>.*)a>/;
print $res;
执行:
prakash@prak-pc:~$ perl regtest.pl
prakash@prak-pc:~$
my $str = '<a href="link.html"> TITLE </a> <a href="link.html"> SUB TITLE </a>';
my ($res) = $str =~ m~<a[^>]*>(.*?)</a>~;
print $res,"\n";
说明:
m~ # match operator, delimiter
<a # literally <a
[^>]* # 0 or more any character tat is not >
> # >
(.*?) # group 1, 1 or more any character, not greedy
</a> # literally
~ # regex delimiter
您可以使用m~<a[^>]*>\h*(.*?)\h*</a>~
如果你不想要匹配的开头和结尾的空格也。
/^(?:<a[^>]*>)([^<]*)/
看到regex101 https://regex101.com/r/Po3goc/1演示