cpython/Lib/fnmatch.py

36 lines
802 B
Python

# module 'fnmatch' -- filename matching with shell patterns
# XXX [] patterns are not supported (but recognized)
def fnmatch(name, pat):
if '*' in pat or '?' in pat or '[' in pat:
return fnmatch1(name, pat)
return name = pat
def fnmatch1(name, pat):
for i in range(len(pat)):
c = pat[i]
if c = '*':
restpat = pat[i+1:]
if '*' in restpat or '?' in restpat or '[' in restpat:
for i in range(i, len(name)):
if fnmatch1(name[i:], restpat):
return 1
return 0
else:
return name[len(name)-len(restpat):] = restpat
elif c = '?':
if len(name) <= i : return 0
elif c = '[':
return 0 # XXX
else:
if name[i:i+1] <> c:
return 0
return 1
def fnmatchlist(names, pat):
res = []
for name in names:
if fnmatch(name, pat): res.append(name)
return res