Bryan R Harris wrote:
Bryan R Harris wrote:
I'd like to snag all the whitespace padded numbers in $_ into an array, e.g.
in the following:
1 "M_fx,-3,+2.p2" -31.4e-1 4.
I'd like to pick up only the 1, -31.4e-1, and 4.
I've tried:
$ss = qr/(^|\s)[+-]?[0-9]+\.?[0-9]*([eE][+-]?[0-9]+\.?[0-9]*)?($|\s)/;
@list = m/$ss/g;
... but it slurps up the leading whitespace if it's there, and misses every
other number, amid other problems. I'd love to use \b, but it doesn't work
if there are "-" or "+" at the leading edge.
Any good ideas on how to do this?
This should work:
/(?:^|\s)((?:[+-]?)(?=\d|\.\d)\d*(?:\.\d*)?(?:[Ee](?:[+-]?\d+))?)/
This is the right direction, but it grabs numbers that look like this:
1111xxxx
Well, it grabs the 1111.
Is it possible to keep from grabbing those?
Add a look-ahead assertion like this at the very end of the regex:
(?=\s|$)
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>