Multilinha em Regex Python
Expressões regulares ao trabalhar com strings multilinha têm suas particularidades. Vamos entendê-las usando como exemplo a seguinte string, contendo caracteres comuns, caracteres de quebra de linha e tabulação:
pythontxt = '''111
222
333
444'''
Quebra de Linha
Caracteres de quebra de linha podem ser capturados
usando o comando '\n':
pythonres = re.sub('\n', '!', txt)
print(res)
O resultado será a seguinte string (os espaços entre as linhas são tabulações):
python'111! 222! 333! 444'
Tabulação
Caracteres de tabulação podem ser capturados
usando o comando '\t':
pythonres = re.sub('\t', '!', txt)
print(res)
Resultado da execução do código:
python'''
!111
!222
!333
!444
'''
Comportamento do Ponto
O comando '.' para uma string multilinha
não captura caracteres de quebra de linha:
pythonres = re.sub('.', '!', txt)
print(res)
Resultado da execução do código:
python'''
!!!
!!!!
!!!!
!!!!
'''
Qualquer Caractere
Para capturar todos os caracteres em uma string
multilinha, usa-se um truque esperto na forma
da combinação [\s\S]. Essa construção
encontrará todos os caracteres comuns e todas as quebras
de linha:
pythonres = re.sub('[\s\S]', '!', txt)
print(res)
Resultado da execução do código:
python'!!!!!!!!!!!!!!!!!!'
Cifrão
O comando '$' no modo multilinha
capturará o final de cada linha:
pythonres = re.sub('$', '!', txt)
print(res)
Resultado da execução do código:
python'''
111!
222!
333!
444!
'''
Problemas Práticos
Dada a string:
python'''
abc
def
ghi
jkl
'''
Escreva uma expressão regular que transformará esta string na seguinte:
python'''
abc!
def!
ghi!
jkl!
'''
Dada a string:
python'''
abc
def
ghi
jkl
'''
Escreva uma expressão regular que transformará esta string na seguinte:
python'''
! abc
! def
! ghi
! jkl
'''
Dada a string:
python'''
abc
def
ghi
jkl
'''
Escreva uma expressão regular que transformará esta string na seguinte:
python'''!
abc
def
ghi
jkl
!'''
Dada a string:
python'''
abc
def
ghi
jkl
'''
Escreva uma expressão regular que transformará esta string na seguinte:
python'''!
! abc
! def
! ghi
! jkl
!'''
Dada a string:
python'''
abc
def
ghi
jkl
'''
Escreva uma expressão regular que transformará esta string na seguinte:
python'''!
abc!
def!
ghi!
jkl!
!'''
Dada a string:
python'''
abc
def
ghi
jkl
'''
Escreva uma expressão regular que transformará esta string na seguinte:
python'''
!abc
!def
!ghi
!jkl
'''