Mehrzeiligkeit in Python-Regex
Reguläre Ausdrücke haben ihre Besonderheiten bei der Arbeit mit mehrzeiligen Zeichenketten. Lassen Sie uns diese anhand der folgenden Zeichenkette untersuchen, die gewöhnliche Zeichen, Zeilenumbruchzeichen und Tabulatoren enthält:
txt = '''111
222
333
444'''
Zeilenumbruch
Zeilenumbruchzeichen können mit
dem Befehl '\n' gefangen werden:
res = re.sub('\n', '!', txt)
print(res)
Als Ergebnis wird die folgende Zeichenkette ausgegeben (die Abstände zwischen den Zeilen sind Tabulatoren):
'111! 222! 333! 444'
Tabulator
Tabulatorzeichen können mit
dem Befehl '\t' gefangen werden:
res = re.sub('\t', '!', txt)
print(res)
Ergebnis der Codeausführung:
'''
!111
!222
!333
!444
'''
Funktion des Punkts
Der Befehl '.' fängt in einer mehrzeiligen Zeichenkette
keine Zeilenumbruchzeichen:
res = re.sub('.', '!', txt)
print(res)
Ergebnis der Codeausführung:
'''
!!!
!!!!
!!!!
!!!!
'''
Beliebiges Zeichen
Um alle Zeichen in einer mehrzeiligen
Zeichenkette zu fangen, wird ein trickreicher Ansatz in Form
der Kombination [\s\S] verwendet. Diese Konstruktion
findet alle gewöhnlichen Zeichen und alle Zeilenumbrüche:
res = re.sub('[\s\S]', '!', txt)
print(res)
Ergebnis der Codeausführung:
'!!!!!!!!!!!!!!!!!!'
Dollar
Der Befehl '$' wird im mehrzeiligen Modus
das Ende jeder Zeile finden:
res = re.sub('$', '!', txt)
print(res)
Ergebnis der Codeausführung:
'''
111!
222!
333!
444!
'''
Praktische Aufgaben
Gegeben sei die Zeichenkette:
'''
abc
def
ghi
jkl
'''
Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:
'''
abc!
def!
ghi!
jkl!
'''
Gegeben sei die Zeichenkette:
'''
abc
def
ghi
jkl
'''
Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:
'''
! abc
! def
! ghi
! jkl
'''
Gegeben sei die Zeichenkette:
'''
abc
def
ghi
jkl
'''
Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:
'''!
abc
def
ghi
jkl
!'''
Gegeben sei die Zeichenkette:
'''
abc
def
ghi
jkl
'''
Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:
'''!
! abc
! def
! ghi
! jkl
!'''
Gegeben sei die Zeichenkette:
'''
abc
def
ghi
jkl
'''
Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:
'''!
abc!
def!
ghi!
jkl!
!'''
Gegeben sei die Zeichenkette:
'''
abc
def
ghi
jkl
'''
Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:
'''
!abc
!def
!ghi
!jkl
'''