html - Perl 正则表达式从嵌套的 html 标签中提取值

标签 html regex perl

$match = q(<a href="#google"><h1><b>Google</b></h1></a>);
if($match =~ /<a.*?href.*?><.?>(.*?)<\/a>/){
$title = $1;
}else {
$title="";
}
print"$title";

输出:Google</b></h1>

应该是:Google

无法在 Perl 中使用正则表达式从链接中提取值,它可能有一个或多或少的嵌套:

<h1><b><i>Google</i></b></h1>

请试试这个:

1) Unix shell

2)

惠普

3) 通用);

4) [1]

输出:

Unix 外壳

生命值

一般

[1]

最佳答案

如评论中所述,不要使用正则表达式。我特别喜欢 Mojo suite ,这让我可以使用 CSS 选择器:

use Mojo;

my $dom = Mojo::DOM->new(q(<a href="#google"><h1><b>Google</b></h1></a>));

print $dom->at('a[href="#google"]')->all_text, "\n";

或用HTML::TreeBuilder::XPath :

use HTML::TreeBuilder::XPath;

my $dom = HTML::TreeBuilder::XPath->new_from_content(q(<a href="#google"><h1><b>Google</b></h1></a>));

print $dom->findvalue('//a[@href="#google"]'), "\n";

关于html - Perl 正则表达式从嵌套的 html 标签中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18488539/

相关文章:

javascript - Bootstrap Collapse show.bs.collapse 第二次不工作

javascript - 使用 jQuery 创建 Accordion ,但得到 "$ is not defined"

html - 让 <em> 标签在斜体上下文中生成非斜体文本

html - 报告的视口(viewport)大小与预期值不同

java - 优先打包排除和打包包含maven war插件

java - Android 中至少 3 个(数字和特殊字符)的正则表达式

php - 一切,但 [ 和 ] 之间的一切

perl - 如何在 Perl 中将文件内容作为电子邮件发送?

regex - Perl 正则表达式 anchor $ 实际上如何处理尾随换行符?

perl - 当您尝试使用 Perl 打印数组或散列并得到 Array(0xd3888) 时,这意味着什么?