Как использовать символы регулярного выражения '\ Q' и '\ E' в Python? - PullRequest
5 голосов
/ 08 марта 2012

Я думал, что это должно работать, но это не так:

import re
if re.match("\Qbla\E", "bla"):
    print "works!"

Почему это не работает?Могу ли я использовать символы '\ Q' и '\ E' в python?Как?

Ответы [ 3 ]

11 голосов
/ 08 марта 2012

Движок регулярных выражений Python не поддерживает их;см. §7.2.1 «Синтаксис регулярного выражения» в документации по Python для получения списка того, что он поддерживает .Тем не менее, вы можете получить тот же эффект, написав re.match(re.escape("bla"), "bla");re.escape - это функция, которая вставляет обратную косую черту перед всеми специальными символами.

Кстати, вы обычно должны использовать «сырые» строки, r"..." вместо просто "...", так как в противном случае обратная косая черта будет обработана дважды(один раз, когда строка анализируется, а затем снова механизмом регулярных выражений), что означает, что вы должны писать что-то вроде \\b вместо \b.Использование r"..." предотвращает этот первый проход обработки, поэтому вы можете просто написать \b.

2 голосов
/ 08 марта 2012

К сожалению, Python не поддерживает escape-последовательности \Q и \E.Тебе просто нужно самим избежать всего.

1 голос
/ 08 марта 2012

Python не поддерживает \ Q ... \ E. Ссылка: http://www.regular -expressions.info / refflavors.html

Но это не значит, что он не поддерживает экранирование метасимволов. Ссылка: http://docs.python.org/library/re.html#re.escape

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