Saltar al contenido

Escape de los caracteres especiales de expresiones regulares en una cadena de Python

Solución:

Usar re.escape

>>> import re
>>> re.escape(r' a.*$')
'\\\ a\.\*\$'
>>> print(re.escape(r' a.*$'))
\ a.*$
>>> re.escape('www.stackoverflow.com')
'www\.stackoverflow\.com'
>>> print(re.escape('www.stackoverflow.com'))
www.stackoverflow.com

Repitiéndolo aquí:

re.escape (cadena)

Devuelve la cadena con todos los caracteres no alfanuméricos con barra invertida; esto es útil si desea hacer coincidir una cadena literal arbitraria que puede tener metacaracteres de expresión regular.

A partir de Python 3.7 re.escape() se cambió para escapar solo de los caracteres que son significativos para las operaciones de expresiones regulares.

Me sorprende que nadie haya mencionado el uso de expresiones regulares a través de re.sub():

import re
print re.sub(r'(["])',    r'\1', 'it's "this"')  # it's "this"
print re.sub(r"(['])",    r'\1', 'it's "this"')  # it's "this"
print re.sub(r'([" '])', r'\1', 'it's "this"')  # it's "this"

Cosas importantes a tener en cuenta:

  • En el buscar patrón, incluir así como los personajes que estás buscando. Vas a estar usando para escapar de tus personajes, por lo que necesitas escapar
    ese así como.
  • Ponga paréntesis alrededor del buscar patrón, por ejemplo (["]), de manera que la sustitución
    patrón puede usar el carácter encontrado cuando agrega en frente de eso. (Eso es lo que
    1 hace: usa el valor del primer grupo entre paréntesis.)
  • los r en frente de r'(["])' significa que es un cuerda cruda. Las cadenas sin formato utilizan diferentes reglas para escapar de las barras diagonales inversas. Escribir (["]) como una cadena simple, necesitaría duplicar todas las barras diagonales inversas y escribir '([\"])'. Las cadenas sin formato son más amigables cuando escribe expresiones regulares.
  • En el sustitución patrón, necesitas escapar para distinguirlo de una barra invertida que precede a un grupo de sustitución, p. ej. 1, por eso r'\1'. Escribir
    ese como una cuerda simple, necesitarías '\\\1' – y nadie quiere eso.

Utilice repr ()[1:-1]. En este caso, no es necesario escapar de las comillas dobles. los [-1:1] slice es eliminar las comillas simples del principio y del final.

>>> x = raw_input()
I'm "stuck" :
>>> print x
I'm "stuck" :
>>> print repr(x)[1:-1]
I'm "stuck" :\

¿O tal vez solo desea escapar de una frase para pegarla en su programa? Si es así, haz esto:

>>> raw_input()
I'm "stuck" :
'I'm "stuck" :\'
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *