Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
translate + re.match solution in Clear category for Unix Match. Part 1 by ogoro
import re
def unix_match(filename: str, pattern: str) -> bool:
print('Filename:', filename)
print('Pattern:', pattern)
regex_pattern = r'(' + pattern.translate({ord('*') : '.*',
ord('?') : '.',
ord('.') : '\.'}) + ')'
print('Regex pattern:', regex_pattern)
regex_match = re.match(regex_pattern, filename)
if regex_match:
print('Regex match group:', regex_match.group(0))
print()
return filename == regex_match.group(0)
else:
print('No matches found')
print()
return False
if __name__ == '__main__':
assert unix_match('12apache1', '*.*') == False
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!")
Nov. 17, 2020