Regexp буквально интерпретировать \ t как \ t, а не как tab - PullRequest
2 голосов
/ 27 августа 2009

Я пытаюсь сопоставить последовательность текста с обратной косой чертой в ней, как путь к Windows.

Теперь, когда я сопоставляю с regexp в python, он получает совпадение, но модуль интерпретирует все обратные слеши, за которыми следует допустимый escape-символ (то есть t), как escape-последовательность, а это не то, что мне нужно.

Как я могу этого не делать?

Спасибо / М

EDIT: ну, я пропустил, что регулярное выражение, соответствующее тексту, который содержит обратную косую черту, является (. *). Я пробовал сырой нотации (например, в awnsers), но это не помогает в моей ситуации. Или я делаю это неправильно. EDIT2: сделал это неправильно. Спасибо, парни / девушки!

Ответы [ 2 ]

10 голосов
/ 27 августа 2009

Используйте двойную обратную косую черту с r, как это

>>> re.match(r"\\t", r"\t")
<_sre.SRE_Match object at 0xb7ce5d78>

Из питона Документы :

Когда кто-то хочет соответствовать буквальному обратная косая черта, он должен быть экранирован в регулярное выражение. С сырой строкой обозначение, это означает, что г "\". Без необработанная строковая запись, нужно использовать "\\", делая следующие строки функционально идентичный код:

>>> re.match(r"\\", r"\\")
<_sre.SRE_Match object at ...>
>>> re.match("\\\\", r"\\")
<_sre.SRE_Match object at ...>
0 голосов
/ 27 августа 2009

Всегда используйте префикс r при определении вашего регулярного выражения. Это скажет Python обрабатывать строку как необработанную, поэтому он не выполняет никакой стандартной обработки.

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