According to the https://bugs.python.org/issue13929, "[seq]" should be escaped by the backslash. However, when i run the same code, i have different result like bellow
I need to detect the string contains the "[" and "]". So, my solution is to change "[seq]" to the "{seq}" on both string and pattern like bellow.
string = string.replace("[", "{").replace("]", "}")
pattern = pattern.replace("[", "{").replace("]", "}")
fnmatch.fnmatch(string, pattern)
Could there be a better solution?
fnmatch
does not support escaping with backslashes. Instead, you should enclose special characters in square brackets. From the docs:
For a literal match, wrap the meta-characters in brackets. For example, '[?]' matches the character '?'.
pattern = "*[[]Ver.2]*"