我有一些丑陋的HTML,通过电子邮件发送到我的程序,看起来像:
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
</head>
<body>
Saved search results.<br>
<br>
Name: 'Some splunk search' <br>
Query Terms: 'tag=foo NOT BAR=\"Boom\"' <br>
Link to results: <a href="https://foo/search/blahblahblah">
https://foo/search/blahblahblah</a>
<br>
<br>
<table border="1">
...为了简洁而剪掉其余部分。
我可以使用HTML :: TreeBuilder拉出表格元素,但无法弄清楚如何使用 拉出&#34;姓名:&#34; &#34;查询条款&#34;从上到下,不采取其他手段。
以上的$ root-&gt;转储如下:
<html> @0
<head> @0.0
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> @0.0.0
<body> @0.1
<p> @0.1.0 (IMPLICIT)
" Saved search results. "
<br /> @0.1.0.1
<br /> @0.1.0.2
" Name: 'Some splunk search' "
<br /> @0.1.0.4
" Query Terms: 'tag=foo NOT BAR=\"Boom\""
那么有没有办法在@ 0.1.0.2和@ 0.1.0.4
之间获取裸文本谢谢! 托德
答案 0 :(得分:0)
如果文本有模式,则可能更容易使用HTML解析和正则表达式的组合。
my $body_text = $body->as_text(skip_dels => 1);
my ($name) = ($body_text =~ m#Name: '([^']+)'#s);
my ($query_terms) = ($body_text =~ m#Query Terms: '([^']+)'#s);