Search code examples
pythonescapingfnmatch

python fnmatch.fnmatch("[seq]") escape not working


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

enter image description here

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?


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]*"