我想使用perl reg ex one liner匹配段落标记的内容。该段落是这样的:
<p style="font-family: Calibri,Helvetica,serif;">Text I want to extract</p>
所以我一直在使用这样的东西:
perl -nle 'm/<p>($.)<\/p>/ig; print $1' file.html
赞赏任何想法
感谢
答案 0 :(得分:5)
强制link当您尝试使用正则表达式解析HTML时会发生什么。
使用HTML::TreeBuilder的David Dorward评论是一个很好的评论。 另一个好方法是使用HTML::DOM:perl -MHTML::DOM -e 'my $dom = HTML::DOM->new(); $dom->parse_file("file.html"); my @p = $dom->getElementsByTagName("p"); print $p[0]->innerText();'
答案 1 :(得分:1)
$
表示“字符串结束”,您还需要以p-tag非贪婪的方式匹配所有内容:
perl -nle 'm/<p.*?>(.+)<\/p/ig; print $1' test.html