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:

pythontxt = '''111
  222
  333
  444'''

Zeilenumbruch

Zeilenumbruchzeichen können mit dem Befehl '\n' gefangen werden:

pythonres = re.sub('\n', '!', txt)
print(res)

Als Ergebnis wird die folgende Zeichenkette ausgegeben (die Abstände zwischen den Zeilen sind Tabulatoren):

python'111!  222!  333!  444'

Tabulator

Tabulatorzeichen können mit dem Befehl '\t' gefangen werden:

pythonres = re.sub('\t', '!', txt)
print(res)

Ergebnis der Codeausführung:

python'''
!111
!222
!333
!444
'''

Funktion des Punkts

Der Befehl '.' fängt in einer mehrzeiligen Zeichenkette keine Zeilenumbruchzeichen:

pythonres = re.sub('.', '!', txt)
print(res)

Ergebnis der Codeausführung:

python'''
  !!!
  !!!!
  !!!!
  !!!!
'''

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:

pythonres = re.sub('[\s\S]', '!', txt)
print(res)

Ergebnis der Codeausführung:

python'!!!!!!!!!!!!!!!!!!'

Dollar

Der Befehl '$' wird im mehrzeiligen Modus das Ende jeder Zeile finden:

pythonres = re.sub('$', '!', txt)
print(res)

Ergebnis der Codeausführung:

python'''
  111!
  222!
  333!
  444!
'''

Praktische Aufgaben

Задание 1

Gegeben sei die Zeichenkette:

python'''
  abc
  def
  ghi
  jkl
'''

Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:

python'''
  abc!
  def!
  ghi!
  jkl!
'''
Задание 2

Gegeben sei die Zeichenkette:

python'''
  abc
  def
  ghi
  jkl
'''

Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:

python'''
!  abc
!  def
!  ghi
!  jkl
'''
Задание 3

Gegeben sei die Zeichenkette:

python'''
  abc
  def
  ghi
  jkl
'''

Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:

python'''!
  abc
  def
  ghi
  jkl
!'''
Задание 4

Gegeben sei die Zeichenkette:

python'''
  abc
  def
  ghi
  jkl
'''

Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:

python'''!
!  abc
!  def
!  ghi
!  jkl
!'''
Задание 5

Gegeben sei die Zeichenkette:

python'''
  abc
  def
  ghi
  jkl
'''

Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:

python'''!
  abc!
  def!
  ghi!
  jkl!
!'''
Задание 6

Gegeben sei die Zeichenkette:

python'''
  abc
  def
  ghi
  jkl
'''

Schreiben Sie einen regulären Ausdruck, der aus dieser Zeichenkette folgende macht:

python'''
  !abc
  !def
  !ghi
  !jkl
'''