Извлечение содержимого тега абзаца с использованием Perl one liner - PullRequest
0 голосов
/ 17 февраля 2011

Я бы хотел сопоставить содержимое тега абзаца, используя 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 ]

5 голосов
/ 17 февраля 2011

Обязательно ссылка на то, что происходит, когда вы пытаетесь проанализировать HTML с помощью регулярных выражений.

Комментарий Дэвида Дорварда, для использования 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();'
1 голос
/ 17 февраля 2011

$ в соответствующей части означает «конец строки», и вам также нужно сопоставить все в p-тэге не жадным способом:

perl -nle 'm/<p.*?>(.+)<\/p/ig; print $1' test.html

...