Зачем нужен r' ' - литерал в модуле re. И нужен ли?

В докуметации по модулю re есть примеры использования паттернов как в формате обычной строки " ", так и специфической r" " - строкой:

import re
m = re.search('(?<=abc)def', 'abcdef')
m.group(0)

и

m = re.search(r'(?<=-)\w+', 'spam-egg')
m.group(0)

они чем то отличаются в работе и когда их нужно использовать?


Ответы (1 шт):

Автор решения: Эникейщик

Ответ содержится в самом верху страницы:

The solution is to use Python’s raw string notation for regular expression patterns; backslashes are not handled in any special way in a string literal prefixed with 'r'. So r"\n" is a two-character string containing '\' and 'n', while "\n" is a one-character string containing a newline. Usually patterns will be expressed in Python code using this raw string notation.

Коротко: r-строки не требуют экранирования спецсимволов (например, \, а обычные требуют). r"\n" это два символа - \ и n, а "\n" - один символ (перевод строки).

→ Ссылка