Issue 25734: fnmatch regular expression can be improved (original) (raw)

https://hg.python.org/cpython/file/tip/Lib/fnmatch.py

fnmatch reviewing the code I've noticed that the outcome of the regular expression all returns generated in the first result

l97: res = res + '.' to: res = res + '.?'

l100: return res + '\Z(?ms)' to: return res + '$(?ms)'

example test:

import re import fnmatch

urls = ['example/l1/l2/test3-1.py', 'example/l1/test2-1.py', 'example/l1/test2-2.py', 'example/l1/l2/l3/test4-1.py']

regex = fnmatch.translate('example/*')

'example\/.*\Z(?ms)'

re.findall(regex, "\n".join(urls))

return ['example/l1/l2/test3-1.py\nexample/l1/test2-1.py\nexample/l1/test2-2.py\nexample/l1/l2/l3/test4-1.py']

suggested change

re.findall('example\/.*?$(?ms)', "\n".join(urls))

return ['example/l1/l2/test3-1.py',

'example/l1/test2-1.py',

'example/l1/test2-2.py',

'example/l1/l2/l3/test4-1.py']