I\'m getting a \"nothing to repeat\" error when I try to compile this:
search = re.compile(r\'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])\' % \'+test\', re.I)
>
re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '\+test', re.I)
The "+" is the "repeat at least once" quantifier in regular expressions. It must follow something that is repeatable, or it must be escaped if you want to match a literal "+".
Better is this, if you want to build your regex dynamically.
re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % re.escape('+test'), re.I)