Как сохранить обратную косую черту в результате регулярного выражения при работе в Python? - PullRequest
1 голос
/ 16 ноября 2011

Строки, которые я хочу сопоставить, включают в себя некоторые escape-последовательности, такие как «Это что-то».Нет проблем сопоставить его с «. *?», Однако результат автоматически экранируется.Как предотвратить автоматическое экранирование и сохранить обратную косую черту как есть?

Например:

>>> re.findall('\((?P<content>.*?)\)','(It\'s something)')
["It's something"]

И то, что я хочу:

[r"It\'s something"]

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

Входная строка также должна быть необработанной. В противном случае он преобразуется до того, как регулярное выражение его увидит:

>>> import re
>>> re.findall('\((?P<content>.*?)\)',r'(It\'s something)')
["It\\'s something"]
>>> _ == [r"It\'s something"]
True
1 голос
/ 16 ноября 2011

В вашей входной строке нет обратной косой черты.

>>> re.findall('\((?P<content>.*?)\)', r'(It\'s something)')
["It\\'s something"]
>>> ["It\\'s something"] == [r"It\'s something"]
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...