Flerlinieregularudtryk i Python
Regularudtryk har deres særpræg, når de arbejder med flerlinie strenge. Lad os undersøge dem ved hjælp af følgende streng, som indeholder almindelige tegn, linjeskifttegn og tabulatorer:
txt = '''111
222
333
444'''
Linjeskift
Linjeskifttegn kan fanges med
kommandoen '\n':
res = re.sub('\n', '!', txt)
print(res)
Resultatet vil være følgende streng (mellemrum mellem linjerne er tabulatorer):
'111! 222! 333! 444'
Tabulator
Tabulatortegn kan fanges med
kommandoen '\t':
res = re.sub('\t', '!', txt)
print(res)
Resultatet af koden:
'''
!111
!222
!333
!444
'''
Punktums funktion
Kommandoen '.' for en flerlinie-streng
fanger ikke linjeskifttegn:
res = re.sub('.', '!', txt)
print(res)
Resultatet af koden:
'''
!!!
!!!!
!!!!
!!!!
'''
Ethvert tegn
For at fange alle tegn i en flerlinie-
streng bruges et smart trick i form af
kombinationen [\s\S]. Denne konstruktion
vil finde alle almindelige tegn og alle linjeskift:
res = re.sub('[\s\S]', '!', txt)
print(res)
Resultatet af koden:
'!!!!!!!!!!!!!!!!!!'
Dollar-tegn
Kommandoen '$' i flerlinie-tilstand
vil fange slutningen af hver linje:
res = re.sub('$', '!', txt)
print(res)
Resultatet af koden:
'''
111!
222!
333!
444!
'''
Praktiske opgaver
Givet strengen:
'''
abc
def
ghi
jkl
'''
Skriv et regularudtryk, der laver følgende ud af denne streng:
'''
abc!
def!
ghi!
jkl!
'''
Givet strengen:
'''
abc
def
ghi
jkl
'''
Skriv et regularudtryk, der laver følgende ud af denne streng:
'''
! abc
! def
! ghi
! jkl
'''
Givet strengen:
'''
abc
def
ghi
jkl
'''
Skriv et regularudtryk, der laver følgende ud af denne streng:
'''!
abc
def
ghi
jkl
!'''
Givet strengen:
'''
abc
def
ghi
jkl
'''
Skriv et regularudtryk, der laver følgende ud af denne streng:
'''!
! abc
! def
! ghi
! jkl
!'''
Givet strengen:
'''
abc
def
ghi
jkl
'''
Skriv et regularudtryk, der laver følgende ud af denne streng:
'''!
abc!
def!
ghi!
jkl!
!'''
Givet strengen:
'''
abc
def
ghi
jkl
'''
Skriv et regularudtryk, der laver følgende ud af denne streng:
'''
!abc
!def
!ghi
!jkl
'''