in reply to Re: How to write a regular expression to extract a number from an embedded string?
in thread How to write a regular expression to extract a number from an embedded string?

This example fails because you're counting whitespace as part of the eight digits. Look again at the example the OP gave. He wants eight numeric digits after 5163, with the possibility of embeded whitespace. Your example would match "51631       8". That's not what he was asking for. His example output includes "5163 1234 5678" Your solution would provide "5163 1234 56" because it is counting spaces as part of the eight digits.


Dave

Replies are listed 'Best First'.
Re^3: How to write a regular expression to extract a number from an embedded string?
by Eimi Metamorphoumai (Deacon) on Jul 28, 2004 at 20:42 UTC
    No, it isn't. I'm allowing (optional) whitespace before the digits, but it's not counting. Look again at the part that says
    (?:\s*\d){8}
    That is, exactly 8 occurences of (any number of spaces followed by) a single digit. What my code did do wrong is that it assigned $numbers to the result of the check in scalar context, not in list context. But
    my ($numbers) = $string =~ /(5163(?:\s*\d){8})/;
    will work. If you don't believe me, test it out.
      You're right. Good job. Sorry for the errant post. ;)

      Dave