Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Unix Match. Part 2 by imloafer
import re
def unix_match(filename: str, pattern: str) -> bool:
# your code here
pattern = pattern.replace('.', '\.')
pattern = re.sub(r'\[!(.+?)\]', lambda m: '[^' + m[1] + ']', pattern)
pattern = pattern.replace('[!]', '\[!\]')
pattern = pattern.replace('[]', '\s\W')
return re.search(pattern, filename) != None
print("Example:")
print(unix_match('[!]check.txt', '[!]check.txt'))
# These "asserts" are used for self-checking
assert unix_match("log1.txt", "log[1234567890].txt") == True
assert unix_match("log1.txt", "log[!1].txt") == False
assert unix_match('name.txt', 'name[]txt') == False
assert unix_match('nametxt', 'name[]txt') == False
assert unix_match('[!]check.txt', '[!]check.txt') == True
print("The mission is done! Click 'Check Solution' to earn rewards!")
Nov. 23, 2022