Как разобрать теги с '+' в python - PullRequest
5 голосов
/ 26 июня 2009

При попытке скомпилировать это сообщение об ошибке «ничего не повторять»:

search = re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '+test', re.I)

Проблема в знаке «+». Как мне справиться с этим?

Ответы [ 2 ]

9 голосов
/ 26 июня 2009
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])' % re.escape('+test'), re.I)
6 голосов
/ 26 июня 2009

Побег плюс:

r'\+test'

Плюс имеет специальное значение в регулярных выражениях (что означает «соответствовать предыдущему один или несколько раз»). Так как в вашем регулярном выражении он появляется после открытого парена, «предыдущий» не может совпадать повторно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...