Зачем нужен 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'. Sor"\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" - один символ (перевод строки).