The HTML I am tyring to match is, I'm trying to get the number value.
$page =~ m/name=\"VERIFIER\" value=\"(\d+\-\d+)\">/x; print $1;
$page =~ m/value="([-0-9]+?"/;
You may also wish to use the m/regex/si flags in case the HTML spans multiple lines or the VERIFIER name attribute is not upper-cased.
$text .= 'blahblah'; $text .= "\nblah\n"; $text .= 'blahblah'; $text .= "\nblah\n"; $page = (($text =~ m/name="VERIFIER"\ value="([-0-9]+?)">/xg),$1)[0]; print "$page";So, $page will end up as "076-62" in your example... and to hell with $1.
$page = (($text =~ m//xg),$1.'-'.$2)[0];or
$page = (($text =~ m//xg),$1.'-'.$2)[1];if you only wanted a portion of the value. (The '072' or '062' in your example.)
Hi,
You have tried well it's not special characters problem.
$page =~ m/name="VERIFIER" value="(\d+)-(\d+)"/g; print "$1 $2";
"always wondered if there's a list that contains all the special characters to watch out for"
This is pretty much covered in perldoc perlre
You can never be sure what the HTML will actually look like as [ptum] mentions [id://534302|above]. If your HTML is part of a file it would be well worth considering a parser.
#!/bin/perl5
use strict;
use warnings;
use HTML::TokeParser::Simple;
my $html = '';
my $attribute = 'value';
my $value;
my $tp = HTML::TokeParser::Simple->new(\$html)
or die "Couldn't parse string: $!";
while (my $t = $tp->get_token) {
if (
$t->is_start_tag('input') and
$value = $t->get_attr($attribute)
)
{
print "*$value*\n";
}
}
perlmonks.org content © perlmonks.org and Anonymous Monk, explorer, gube, lo_tech, McDarren, Paladin, ptum, wfsp
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03