Я путаюсь с обратной косой чертой в регулярных выражениях. В пределах регулярного выражения a \
имеет особое значение, например. \d
означает десятичную цифру. Если вы добавили обратную косую черту перед обратным слэшем, это особое значение теряется. В regex-howto можно прочитать:
Возможно, самым важным метасимволом является обратная косая черта,
\
. Как и в строковых литералах Python, обратная косая черта может сопровождаться различными символами для сигнализации различных специальных последовательностей. Его также использовали, чтобы избежать всех метасимволов, чтобы вы все еще могли сопоставлять их с шаблонами; например, если вам нужно соответствовать[
или\
, вы можете перед ними обратную косую черту, чтобы удалить их особый смысл:\[
или\\
.
Итак print(re.search('\d', '\d'))
дает None
, потому что \d
соответствует любой десятичной цифре, но в \d
нет ни одного.
Теперь я ожидаю, что print(re.search('\\d', '\d'))
будет соответствовать \d
, но ответ по-прежнему None
.
Только print(re.search('\\\d', '\d'))
дает в качестве вывода <_sre.SRE_Match object; span=(0, 2), match='\\d'>
.
Есть ли у кого-нибудь объяснения?