This will match the position in front of "dog":

(?<=dog)

This will match the position in front of "cat":

(?<=cat)

This will not match in front of "dog" if "dog" is followed by "cat":

(?<=dog)\b (?!cat)

Now my question is how to get this:

(?<=cat)

...but ONLY if "cat" is following "dog." If "dog" does not have "cat" following it, then I simply want this:

(?<=dog)



...if that makes sense :) thanks.




On Mar 8, 2005, at 6:05 PM, Danny Yoo wrote:



On Tue, 8 Mar 2005, Mike Hall wrote:

I'd like to get a match for a position in a string preceded by a
specified word (let's call it "Dog"), unless that spot in the string
(after "Dog") is directly followed by a specific word(let's say "Cat"),
in which case I want my match to occur directly after "Cat", and not
"Dog."

Hi Mike,

You may want to look at "lookahead" assertions. These are patterns of the
form '(?=...)' or '(?!...). The documentation mentions them here:


   http://www.python.org/doc/lib/re-syntax.html

and AMK's excellent "Regular Expression HOWTO" covers how one might use
them:

http://www.amk.ca/python/howto/regex/ regex.html#SECTION000540000000000000000


_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor

Reply via email to