blob: c7caef6f279379c991f0caaa4fe655ed3b0d518a [file] [log] [blame]
Guido van Rossum762c39e1991-01-01 18:11:14 +00001# module 'fnmatch' -- filename matching with shell patterns
2
3# XXX [] patterns are not supported (but recognized)
4
5def fnmatch(name, pat):
6 if '*' in pat or '?' in pat or '[' in pat:
7 return fnmatch1(name, pat)
8 return name = pat
9
10def fnmatch1(name, pat):
11 for i in range(len(pat)):
12 c = pat[i]
13 if c = '*':
14 restpat = pat[i+1:]
15 if '*' in restpat or '?' in restpat or '[' in restpat:
16 for i in range(i, len(name)):
17 if fnmatch1(name[i:], restpat):
18 return 1
19 return 0
20 else:
21 return name[len(name)-len(restpat):] = restpat
22 elif c = '?':
23 if len(name) <= i : return 0
24 elif c = '[':
25 return 0 # XXX
26 else:
27 if name[i:i+1] <> c:
28 return 0
29 return 1
30
31def fnmatchlist(names, pat):
32 res = []
33 for name in names:
34 if fnmatch(name, pat): res.append(name)
35 return res