I get an error message when I use this expression:
re.sub(r"([^\s\w])(\s*\1)+","\\1","...")
I checked the regex at RegExr and it returns . as expected. But when I try it in Python I get this error message:
raise error, v # invalid expression
sre_constants.error: nothing to repeat
Can someone please explain?
It seems to be a python bug (that works perfectly in vim).
The source of the problem is the (\s*…)+ bit. Basically , you can’t do
(\s*)+which make sense , because you are trying to repeat something which can be null.However
(\s*\1)should not be null, but we know it only because we know what’s in \1. Apparently python doesn’t … that’s weird.