See below, from perlre:
So, your regex would be
$phone_book_entry=~m/^Smith.+(?!John)/;
(?!pattern)
A zero-width negative look-ahead assertion. For example /foo(?!bar)/ matches any occurrence of ``foo'' that isn't followed by ``bar''. Note however that look-ahead and look-behind are NOT the same thing. You cannot use this for look-behind.
If you are looking for a ``bar'' that isn't preceded by a ``foo'', /(?!foo)bar/ will not do what you want. That's because the (?!foo) is just saying that the next thing cannot be ``foo''--and it's not, it's a ``bar'', so ``foobar'' will match. You would have to do something like /(?!foo)...bar/ for that. We say ``like'' because there's the case of your ``bar'' not having three characters before it. You could cover that this way: /(?:(?!foo)...|^.{0,2})bar/. Sometimes it's still easier just to say:
if (/bar/ && $` !~ /foo$/)
Sam Gardner
GTO Application Development
Keefe, Bruyette & Woods, Inc.
212-887-6753
-----Original Message-----
From: Edwards, Mark (CXO) [mailto:[EMAIL PROTECTED]]
Sent: Friday, January 14, 2005 12:16 PM
To: Perl-Win32-Users@listserv.ActiveState.com
Subject: EggExp Question
Is there a regular _expression_ to indicate a string you're looking for and one you're not looking for?
Example: You want to find all the Smiths in a list but not Smith, John. So if you read each record from the list, the pseudo code would be something like:
$phone_book_entry=~m/^Smith.+?not(John)/
$phone_book_entry=~m/^Smith, [^J][^o][^h][^n]/ works but can be cumbersome for long strings. Also if you don't know that ", " is always between the last and first name (Smith Jr., John) and use .*?, it breaks.
Is there a real re that will do this?
Thanks
Mark Edwards
HP Services
Technical Solutions Group
<http://www.hp.com/> Hewlett-Packard Company
CXO01-3/N13
301 Rockrimmon Blvd. South
Colorado Springs, CO 80919-2398
Voice: (719) 592-5363
Email: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
_______________________________________________
Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
_______________________________________________ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs