Playing with regexps is fun but to do this reliably you want to use HTML::Parser and probably the HTML::TokeParser interface as this is easier to understand than the raw Parser interface. Here is an example that extracts all the H tags and the text between them from a document. If you just want the text it should be obvious how to get it. If you want to extract from a table just substitute TD for the H tag list. There is an excellent tutorial on TokeParser in Tutorials
#!/usr/bin/perl -w use strict; use HTML::TokeParser; my $dir = "c:/windows/desktop/book/work/"; my $file = $dir."work_introduction.htm"; my $p = HTML::TokeParser->new($file) || die "Can't open $file: $!"; while (my $token = $p->get_tag(qw(h1 h2 h3 h4))) { my $open = $token->[0]; my $close = '/'.$open; my $text = $p->get_trimmed_text($close); print "<$open>$text<$close>\n"; }
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
In reply to Re: Cropping the output of the pattern matcher
by tachyon
in thread Cropping the output of the pattern matcher
by jerrygarciuh
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |