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

Question:

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?

Asked By: mal mal

||

Answers:

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]*"
Answered By: Aran-Fey
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.