使用Perl one liner提取段落标记的内容

时间:2011-02-17 11:46:42

标签: html perl tags expression

我想使用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

赞赏任何想法

感谢

2 个答案:

答案 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