Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
regex and translation table solution in Clear category for Unix Match. Part 1 by Rcp8jzd
import re
def unix_match(filename, pattern):
"""
You need to find out if the given unix pattern matches the given filename.
:param filename: (str) a file name
:param pattern: (str) a unix pattern. * matches everything and ? matches
any single character
:return: (bool) True if the given pattern matches the filename
"""
trantab = str.maketrans({'*': '.', '?': '.{1}', '.': '\.'})
m = re.search(pattern.translate(trantab), filename)
return m is not None
if __name__ == '__main__':
print("Example:")
print(unix_match('somefile.txt', '*'))
# These "asserts" are used for self-checking and not for an auto-testing
assert unix_match('somefile.txt', '*') == True
assert unix_match('other.exe', '*') == True
assert unix_match('my.exe', '*.txt') == False
assert unix_match('log1.txt', 'log?.txt') == True
assert unix_match('log12.txt', 'log?.txt') == False
assert unix_match('log12.txt', 'log??.txt') == True
print("Coding complete? Click 'Check' to earn cool rewards!")
March 22, 2020
Comments: