В документации Python для Regex автор упоминает:
регулярные выражения используют символ backsla sh ('\') для обозначения специальных форм или разрешить использование специальных символов, не вызывая их особого значения. Это противоречит использованию Python одного и того же символа для той же цели в строковых литералах.
Затем он приводит пример соответствия \section
в регулярном выражении:
для совпадения с литералом backsla sh, нужно написать '\\' как строку RE, потому что регулярное выражение должно быть \, а каждый обратный слеш должен быть выражен как \ внутри обычного строкового литерала Python. В RE, которые имеют обратную косую черту несколько раз, это приводит к множеству повторных обратных косых черт и затрудняет понимание результирующих строк.
Затем он говорит, что решение этой "чумы обратного хода sh" должно начаться строка с r
, чтобы превратить ее в необработанную строку.
Позже, однако, он приводит этот пример использования Regex:
p = re.compile('\d+')
p.findall('12 drummers drumming, 11 pipers piping, 10 lords a-leaping')
, что приводит к:
['12', '11', '10']
Я запутался в том, что почему нам не нужно было включать r
в этом случае до '\d+'
. На основании предыдущих объяснений backsla sh я подумал, что нам нужно будет сказать Python, что backsla sh в этой строке не является backsla sh, который он знает.