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

Joh*_*ohn 0 html tags perl expression

我想使用perl reg ex one liner来匹配段落标记的内容.该段落是这样的:

<p style="font-family: Calibri,Helvetica,serif;">Text I want to extract</p>
Run Code Online (Sandbox Code Playgroud)

所以我一直在使用这样的东西:

perl -nle 'm/<p>($.)<\/p>/ig; print $1' file.html
Run Code Online (Sandbox Code Playgroud)

任何想法都赞赏

谢谢

msc*_*cha 5

强制链接到尝试使用正则表达式解析HTML时发生的情况.

David Dorward的评论,使用HTML :: TreeBuilder,是一个很好的评论.另一个好方法是使用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();'
Run Code Online (Sandbox Code Playgroud)

  • 强制链接[这里](http://stackoverflow.com/questions/4231382/regular-expression-pattern-not-matching-anywhere-in-string/4234491#4234491)和[here](http://stackoverflow.com/questions/4284176 /疑问解析 - 数据在perl-where-am-i-going-wrong/4286326#4286326)显示*I*时会发生什么 - 但可能不是*你*☺ - 尝试解析带有正则表达式的HTML.[这里还有一个解释](http://stackoverflow.com/questions/4933611/can-extended-regex-implementations-parse-html/4934590#4934590),因为你的意思并不代表你应该这样做. (2认同)