Flerradighet i Pythons reguljära uttryck
Reguljära uttryck har sina särdrag när de arbetar med flerradiga strängar. Låt oss undersöka dem med hjälp av följande sträng, som innehåller vanliga tecken, radbrytningstecken och tabbtecken:
txt = '''111
222
333
444'''
Radbrytning
Radbrytningstecken kan fångas med
kommandot '\n':
res = re.sub('\n', '!', txt)
print(res)
Som ett resultat kommer följande sträng att skrivas ut (mellanrummen mellan raderna är tabbar):
'111! 222! 333! 444'
Tabb
Tabbtecken kan fångas med hjälp av
kommandot '\t':
res = re.sub('\t', '!', txt)
print(res)
Resultat av exekveringen:
'''
!111
!222
!333
!444
'''
Punkten fungerar
Kommandot '.' för en flerradig sträng
fångar inte radbrytningstecken:
res = re.sub('.', '!', txt)
print(res)
Resultat av exekveringen:
'''
!!!
!!!!
!!!!
!!!!
'''
Vilket tecken som helst
För att fånga alla tecken i en flerradig
sträng används ett knepigt trick i form av
kombinationen [\s\S]. Denna konstruktion
kommer att hitta alla vanliga tecken och alla radbrytningar:
res = re.sub('[\s\S]', '!', txt)
print(res)
Resultat av exekveringen:
'!!!!!!!!!!!!!!!!!!'
Dollar
Kommandot '
i flerradsläge
kommer att fånga slutet på varje rad:
res = re.sub('
', '!', txt)
print(res)
Resultat av exekveringen:
'''
111!
222!
333!
444!
'''
Praktiska uppgifter
Given en sträng:
'''
abc
def
ghi
jkl
'''
Skriv ett reguljärt uttryck som gör följande av denna sträng:
'''
abc!
def!
ghi!
jkl!
'''
Given en sträng:
'''
abc
def
ghi
jkl
'''
Skriv ett reguljärt uttryck som gör följande av denna sträng:
'''
! abc
! def
! ghi
! jkl
'''
Given en sträng:
'''
abc
def
ghi
jkl
'''
Skriv ett reguljärt uttryck som gör följande av denna sträng:
'''!
abc
def
ghi
jkl
!'''
Given en sträng:
'''
abc
def
ghi
jkl
'''
Skriv ett reguljärt uttryck som gör följande av denna sträng:
'''!
! abc
! def
! ghi
! jkl
!'''
Given en sträng:
'''
abc
def
ghi
jkl
'''
Skriv ett reguljärt uttryck som gör följande av denna sträng:
'''!
abc!
def!
ghi!
jkl!
!'''
Given en sträng:
'''
abc
def
ghi
jkl
'''
Skriv ett reguljärt uttryck som gör följande av denna sträng:
'''
!abc
!def
!ghi
!jkl
'''