in reply to Re^4: pricing and phone number regexes
in thread pricing and phone number regexes

Ah, it's the capturing. I used non-capturing parens. Wrap capturing parens around the guts of each RE and you'll have it... but you'll then find the value you want in $1.

Also, don't rely on $1 unless you've verified that there actually was a match.

Sorry for the confusion. Hope this helps.

Just to clarify, here's the money RE with capturing parens:

print "$1" if m/ ( \$ (?:\d{1,3},?)+ (?:\.\d{0,2})? (?![.\d]) ) /x;

Note the capturing parens surrounding everything else, as well as the conditional 'if' to prevent your relying on $1 unless the match really occurred.

If you don't mind the performance hit, you could have also avoided the capturing parens by using the $& special variable.


Dave