SPUG: ifs and whiles and hashes...

Doug Beaver dougb at scalar.org
Wed Aug 18 19:59:16 CDT 1999


On Wed, Aug 18, 1999 at 04:51:05PM -0700, Tim Maher/CONSULTIX wrote:
> According to Doug Beaver:
> > You almost never want to use .* or .*? in order to match stuff like that
> > anyways, you want to use this:
> > 
> > "([^"]*)"
> 
> - or ([^"]+), depending on the minimal acceptable match.
> 
> Good idea Doug, but according to his code, he was trying to match up
> to the next \" sequence, not the next ".  He may have mistakenly
> been trying to (unnecessarily) escape the " characters, in which
> case your approach above would be appropriate, but I recommended
> the .*? approach on the basis of his apparent need to match up to
> the next \" sequence.

(The \" vs " thing has already been discussed...)

I still advocate using a negated character class instead of .*? in
almost all situations, .*? has pitfalls that are hard to understand
until you've been bitten by them a few times.  ;-)  See pp 226-227 of
Mastering Regular Expressions for details.

(I'd list the pitfalls and show some example input and matches using
both .*? and a negated character class, but I'm leaving town soon and
have too much work to finish before I leave...   :-/)

Doug

-- 
Smithers: I'm afraid we have a bad image, Sir.  Market research shows
          people see you as somewhat of an ogre.
   Burns: I ought to club them and eat their bones!

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    POST TO: spug-list at pm.org        PROBLEMS: owner-spug-list at pm.org
 Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/
 SUBSCRIBE/UNSUBSCRIBE: Replace ACTION below by subscribe or unsubscribe
        Email to majordomo at pm.org: ACTION spug-list your_address





More information about the spug-list mailing list