Multilineitate în expresiile regulate Python
Expresiile regulate atunci când lucrează cu șiruri multiline au particularitățile lor. Să le examinăm pe exemplul următorului șir, care conține caractere obișnuite, caractere de newline și tabulare:
txt = '''111
222
333
444'''
Newline
Caracterele de newline pot fi prinse cu
ajutorul comenzii '\n':
res = re.sub('\n', '!', txt)
print(res)
În rezultat va fi afișat următorul șir (spațiile dintre șiruri sunt tabulări):
'111! 222! 333! 444'
Tabulare
Caracterele de tabulare pot fi prinse cu ajutorul
comenzii '\t':
res = re.sub('\t', '!', txt)
print(res)
Rezultatul executării codului:
'''
!111
!222
!333
!444
'''
Funcționarea punctului
Comanda '.' pentru un șir multiline
nu prinde caracterele de newline:
res = re.sub('.', '!', txt)
print(res)
Rezultatul executării codului:
'''
!!!
!!!!
!!!!
!!!!
'''
Orice caracter
Pentru a prinde toate caracterele dintr-un șir
multiline, se folosește o construcție specială
sub forma [\s\S]. Această construcție
va găsi toate caracterele obișnuite și toate newline-urile:
res = re.sub('[\s\S]', '!', txt)
print(res)
Rezultatul executării codului:
'!!!!!!!!!!!!!!!!!!'
Dolar
Comanda '$' în modul multiline
va prinde sfârșitul fiecărui rând:
res = re.sub('$', '!', txt)
print(res)
Rezultatul executării codului:
'''
111!
222!
333!
444!
'''
Probleme practice
Este dat șirul:
'''
abc
def
ghi
jkl
'''
Scrieți o expresie regulată care va transforma acest șir în următorul:
'''
abc!
def!
ghi!
jkl!
'''
Este dat șirul:
'''
abc
def
ghi
jkl
'''
Scrieți o expresie regulată care va transforma acest șir în următorul:
'''
! abc
! def
! ghi
! jkl
'''
Este dat șirul:
'''
abc
def
ghi
jkl
'''
Scrieți o expresie regulată care va transforma acest șir în următorul:
'''!
abc
def
ghi
jkl
!'''
Este dat șirul:
'''
abc
def
ghi
jkl
'''
Scrieți o expresie regulată care va transforma acest șir în următorul:
'''!
! abc
! def
! ghi
! jkl
!'''
Este dat șirul:
'''
abc
def
ghi
jkl
'''
Scrieți o expresie regulată care va transforma acest șir în următorul:
'''!
abc!
def!
ghi!
jkl!
!'''
Este dat șirul:
'''
abc
def
ghi
jkl
'''
Scrieți o expresie regulată care va transforma acest șir în următorul:
'''
!abc
!def
!ghi
!jkl
'''