in reply to simple regex

Try:
$page =~ m/name="VERIFIER" value="([-0-9]+?)"/;

Replies are listed 'Best First'.
Re^2: simple regex
by ptum (Priest) on Mar 03, 2006 at 17:51 UTC

    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.


    No good deed goes unpunished. -- (attributed to) Oscar Wilde
Re^2: simple regex
by lo_tech (Scribe) on Mar 03, 2006 at 19:37 UTC
    Who says 'Fun with regexes' is not a contact sport?
    $text .= 'blah<input type="hidden" name="FOO" value="123-01">blah'; $text .= "\nblah\n"; $text .= 'blah<input type="hidden" name="VERIFIER" value="076-62">blah +'; $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.




    If you wanted make it more interesting, you could replace the appropriate line with:
    $page = (($text =~ m/<input\ type="hidden"\ name="VERIFIER"\ value="(\ +d+)\-(\d+)">/xg),$1.'-'.$2)[0];
    or
    $page = (($text =~ m/<input\ type="hidden"\ name="VERIFIER"\ value="(\ +d+)\-(\d+)">/xg),$1.'-'.$2)[1];
    if you only wanted a portion of the value. (The '072' or '062' in your example.)




    FYI, the 'special character' that's goofing with you (at least as written in your example) is the space between "VERIFIER" and value. The " characters do not have to be backwhack-escaped, but that non-escaped space in the middle of your regex will cause the match to fail.

    Well, that's my $.02 worth. No, for refunds you'll have to check our customer service department.