Viacriadkovosť v regulárnych výrazoch Python
Regulárne výrazy pri práci s viacriadkovými reťazcami majú svoje špecifiká. Poďme sa s nimi vysporiadať na príklade nasledujúceho reťazca, ktorý obsahuje obyčajné znaky, znaky konca riadka a tabulátory:
pythontxt = '''111
222
333
444'''
Koniec riadka
Znaky konca riadka je možné zachytiť
pomocou príkazu '\n':
pythonres = re.sub('\n', '!', txt)
print(res)
Výsledkom bude nasledujúci reťazec (medzery medzi riadkami sú tabulátory):
python'111! 222! 333! 444'
Tabulátor
Znaky tabulátora je možné zachytiť pomocou
príkazu '\t':
pythonres = re.sub('\t', '!', txt)
print(res)
Výsledok vykonania kódu:
python'''
!111
!222
!333
!444
'''
Funkcia bodky
Príkaz '.' pre viacriadkový reťazec
nezachytáva znaky konca riadka:
pythonres = re.sub('.', '!', txt)
print(res)
Výsledok vykonania kódu:
python'''
!!!
!!!!
!!!!
!!!!
'''
Ľubovoľný znak
Na zachytenie všetkých znakov vo viacriadkovom
reťazci sa používa šikovný trik v podobe
kombinácie [\s\S]. Takáto konštrukcia
nájde všetky obyčajné znaky a všetky konce
riadkov:
pythonres = re.sub('[\s\S]', '!', txt)
print(res)
Výsledok vykonania kódu:
python'!!!!!!!!!!!!!!!!!!'
Dolár
Príkaz ' vo viacriadkovom režime
bude zachytávať koniec každého riadku:
pythonres = re.sub('
', '!', txt)
print(res)
Výsledok vykonania kódu:
python'''
111!
222!
333!
444!
'''
Praktické úlohy
Daný reťazec:
python'''
abc
def
ghi
jkl
'''
Napíšte regulárny výraz, ktorý z tohto reťazca urobí nasledujúci:
python'''
abc!
def!
ghi!
jkl!
'''
Daný reťazec:
python'''
abc
def
ghi
jkl
'''
Napíšte regulárny výraz, ktorý z tohto reťazca urobí nasledujúci:
python'''
! abc
! def
! ghi
! jkl
'''
Daný reťazec:
python'''
abc
def
ghi
jkl
'''
Napíšte regulárny výraz, ktorý z tohto reťazca urobí nasledujúci:
python'''!
abc
def
ghi
jkl
!'''
Daný reťazec:
python'''
abc
def
ghi
jkl
'''
Napíšte regulárny výraz, ktorý z tohto reťazca urobí nasledujúci:
python'''!
! abc
! def
! ghi
! jkl
!'''
Daný reťazec:
python'''
abc
def
ghi
jkl
'''
Napíšte regulárny výraz, ktorý z tohto reťazca urobí nasledujúci:
python'''!
abc!
def!
ghi!
jkl!
!'''
Daný reťazec:
python'''
abc
def
ghi
jkl
'''
Napíšte regulárny výraz, ktorý z tohto reťazca urobí nasledujúci:
python'''
!abc
!def
!ghi
!jkl
'''