Multilínea en expresiones regulares de Python
Las expresiones regulares al trabajar con cadenas multilínea tienen sus particularidades. Vamos a analizarlas usando como ejemplo la siguiente cadena, que contiene caracteres ordinarios, caracteres de salto de línea y tabulaciones:
txt = '''111
222
333
444'''
Salto de línea
Los caracteres de salto de línea pueden capturarse
usando el comando '\n':
res = re.sub('\n', '!', txt)
print(res)
Como resultado se mostrará la siguiente cadena (los espacios entre líneas son tabulaciones):
'111! 222! 333! 444'
Tabulación
Los caracteres de tabulación pueden capturarse usando
el comando '\t':
res = re.sub('\t', '!', txt)
print(res)
Resultado de ejecutar el código:
'''
!111
!222
!333
!444
'''
Comportamiento del punto
El comando '.' para una cadena multilínea
no captura caracteres de salto de línea:
res = re.sub('.', '!', txt)
print(res)
Resultado de ejecutar el código:
'''
!!!
!!!!
!!!!
!!!!
'''
Cualquier carácter
Para capturar todos los caracteres en una cadena
multilínea, se usa un truco ingenioso en forma de
combinación [\s\S]. Esta construcción
encontrará todos los caracteres ordinarios y todos los saltos
de línea:
res = re.sub('[\s\S]', '!', txt)
print(res)
Resultado de ejecutar el código:
'!!!!!!!!!!!!!!!!!!'
Dólar
El comando '$' en modo multilínea
capturará el final de cada línea:
res = re.sub('$', '!', txt)
print(res)
Resultado de ejecutar el código:
'''
111!
222!
333!
444!
'''
Tareas prácticas
Se da la cadena:
'''
abc
def
ghi
jkl
'''
Escriba una expresión regular que transforme esta cadena en la siguiente:
'''
abc!
def!
ghi!
jkl!
'''
Se da la cadena:
'''
abc
def
ghi
jkl
'''
Escriba una expresión regular que transforme esta cadena en la siguiente:
'''
! abc
! def
! ghi
! jkl
'''
Se da la cadena:
'''
abc
def
ghi
jkl
'''
Escriba una expresión regular que transforme esta cadena en la siguiente:
'''!
abc
def
ghi
jkl
!'''
Se da la cadena:
'''
abc
def
ghi
jkl
'''
Escriba una expresión regular que transforme esta cadena en la siguiente:
'''!
! abc
! def
! ghi
! jkl
!'''
Se da la cadena:
'''
abc
def
ghi
jkl
'''
Escriba una expresión regular que transforme esta cadena en la siguiente:
'''!
abc!
def!
ghi!
jkl!
!'''
Se da la cadena:
'''
abc
def
ghi
jkl
'''
Escriba una expresión regular que transforme esta cadena en la siguiente:
'''
!abc
!def
!ghi
!jkl
'''