Detecting RegEx across Python versions

Fredrik Lundh fredrik at pythonware.com
Fri Feb 16 05:00:54 EST 2001


> I have done the following, but would welcome something more
> elegant
>
>     [...]
>     # kludge to detect a regular expression across python versions
>     elif sys.version[0]=='1' and isinstance(pattern, re.RegexObject):
>         if pattern.match(name):
>             files.append(fname)
>     elif sys.version[0]=='2' and type(pattern)==type(re.compile('')):
>         if pattern.match(name):
>             files.append(fname)
>     elif type(pattern) is StringType:
>         if fnmatch.fnmatch(name, pattern):
>             files.append(fname)

if isinstance(pattern, type("")):
    if fnmatch.fnmatch(name, pattern):
        files.append(fname)
else:
    if pattern.match(name):
        files.append(fname)

or:

try:
    if pattern.match(name):
        files.append(fname)
except AttributeError:
    if fnmatch.fnmatch(name, pattern):
        files.append(fname)

or:

if isinstance(pattern, type("")):
    pattern = re.compile(fnmatch.translate(pattern))

...

if pattern.match(name):
    ...

(insert os.path.normcase where necessary)

Cheers /F





More information about the Python-list mailing list