¿Alguien puede explicar por qué funciona el siguiente ejemplo 1, cuando no se utiliza el prefijo r? Pensé que el prefijo r debe usarse siempre que se usen secuencias de escape. Ejemplo 2 y el ejemplo 3 demuestra este ..Python regex - r prefijo
# example 1
import re
print (re.sub('\s+', ' ', 'hello there there'))
# prints 'hello there there' - not expected as r prefix is not used
# example 2
import re
print (re.sub(r'(\b\w+)(\s+\1\b)+', r'\1', 'hello there there'))
# prints 'hello there' - as expected as r prefix is used
# example 3
import re
print (re.sub('(\b\w+)(\s+\1\b)+', '\1', 'hello there there'))
# prints 'hello there there' - as expected as r prefix is not used
Exactamente. Aunque, @JT, recomiendo usar '\\ s' o r '\ s', o probablemente golpearás inadvertidamente algunas secuencias de escape que no pretendías. –
De hecho: utilice siempre cadenas crudas literales cuando desee que la cadena contenga barras invertidas (en lugar de querer realmente las secuencias de escape). –
@Thomas: 'r' todavía escapa de algunas secuencias cuando aparecen al final de la cadena:' r "\" 'no es válido, para hacer eso tienes que hacer' "\\" '. Si haces 'r" \\ "', obtienes un '\\' impreso ('" \\\\ "' cadena). Ten cuidado con eso – voyager