Regular expression for not-group

Paddy paddy3118 at netscape.net
Thu Jun 15 17:18:42 EDT 2006


Chris Lasher wrote:
> Is it possible to write a regular expression such that a "match" is
> found provided the string does not match a group in the regex? Let me
> give a concrete example.
>
> Suppose I want to find a match to any filename that does not end in
> .py, (ignoring the obvious use of the .endswith('.py') string method).
> I tried the things that were obvious to me, none of which worked.
>
> \.^(py)
> \.(^py)
> \.[^p][^y]
>
> The last one deceived me at first because it will match "spam.spam",
> but not "spam.parrot". I'm a bit stumped at this point. If this can be
> done with a regular expression, I'd love to know how, and even if it
> can't be, that would be very helpful to know, too.
>

The re module documentation has this snippet:

(?!...)
Matches if ... doesn't match next. This is a negative lookahead
assertion. For example, Isaac (?!Asimov) will match 'Isaac ' only if
it's not followed by 'Asimov'. 

- Paddy.




More information about the Python-list mailing list