Többsoros mintaillesztés Python reguláris kifejezésekben
A reguláris kifejezéseknek sajátosságai vannak többsoros szövegek kezelésekor. Nézzük meg ezeket a következő szöveg példáján, amely közönséges karaktereket, sortörés és tabulátor karaktereket tartalmaz:
txt = '''111
222
333
444'''
Sortörés
A sortörés karaktereket elkaphatjuk a
'\n' parancs segítségével:
res = re.sub('\n', '!', txt)
print(res)
Az eredmény a következő szöveg lesz (a sorok közötti részek tabulátorok):
'111! 222! 333! 444'
Tabulátor
A tabulátor karaktereket elkaphatjuk a
'\t' parancs segítségével:
res = re.sub('\t', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'''
!111
!222
!333
!444
'''
A pont működése
A '.' parancs többsoros szöveg esetén
nem kapja el a sortörés karaktereket:
res = re.sub('.', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'''
!!!
!!!!
!!!!
!!!!
'''
Bármely karakter
Ahhoz, hogy az összes karaktert elkapjuk többsoros
szövegben, egy trükkös megoldást használunk, nevezetesen
a [\s\S] kombinációt. Ez a konstrukció
meg fogja találni az összes közönséges karaktert és az összes sortörést:
res = re.sub('[\s\S]', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'!!!!!!!!!!!!!!!!!!'
Dollár
A '$' parancs többsoros módban
minden sor végét fogja elkapni:
res = re.sub('$', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'''
111!
222!
333!
444!
'''
Gyakorlati feladatok
Adott a következő szöveg:
'''
abc
def
ghi
jkl
'''
Írj reguláris kifejezést, amely ebből a szövegből a következőt készíti:
'''
abc!
def!
ghi!
jkl!
'''
Adott a következő szöveg:
'''
abc
def
ghi
jkl
'''
Írj reguláris kifejezést, amely ebből a szövegből a következőt készíti:
'''
! abc
! def
! ghi
! jkl
'''
Adott a következő szöveg:
'''
abc
def
ghi
jkl
'''
Írj reguláris kifejezést, amely ebből a szövegből a következőt készíti:
'''!
abc
def
ghi
jkl
!'''
Adott a következő szöveg:
'''
abc
def
ghi
jkl
'''
Írj reguláris kifejezést, amely ebből a szövegből a következőt készíti:
'''!
! abc
! def
! ghi
! jkl
!'''
Adott a következő szöveg:
'''
abc
def
ghi
jkl
'''
Írj reguláris kifejezést, amely ebből a szövegből a következőt készíti:
'''!
abc!
def!
ghi!
jkl!
!'''
Adott a következő szöveg:
'''
abc
def
ghi
jkl
'''
Írj reguláris kifejezést, amely ebből a szövegből a következőt készíti:
'''
!abc
!def
!ghi
!jkl
'''