arksdf
arksdf

Reputation: 431

Python - re.error: unterminated character set at position

The following code:

text = "I'm a string that contains this characters {}, [], ()"
slice = "this characters {}, [], ()"
print([ (m.start(0), m.end(0)) for m in re.finditer(slice, text) ])

Shows the error:

re.error: unterminated character set at position 12

That is, most likely, because of the metacharacters "{}, [], ()". Is there any regular expression that can make finditer ignore it?

Upvotes: 25

Views: 69343

Answers (1)

DYZ
DYZ

Reputation: 57033

You must escape the special characters in your regex:

slice = "this characters \{}, \[], \(\)"

Note that only the opening brace and square bracket need an escape, but both parentheses.

Upvotes: 43

Related Questions