Mehrzeiligkeit in JavaScript-Regexen
Reguläre Ausdrücke haben ihre Besonderheiten bei der Arbeit mit mehrzeiligen Zeichenketten. Lass uns das anhand der folgenden Zeichenkette erkunden, die gewöhnliche Zeichen, Zeilenumbruchzeichen und Tabulatoren enthält:
let str = `111
222
333
444`;
Zeilenumbruch
Zeilenumbruchzeichen können
mit dem Befehl '\n' gefangen werden:
let res = str.replace(/\n/g, '!');
Das Ergebnis in der Variable wird folgendes sein (Die Abstände zwischen den Zeilen sind Tabulatoren):
`111! 222! 333! 444`;
Tabulator
Tabulatorzeichen können
mit dem Befehl '\t' gefangen werden:
let res = str.replace(/\t/g, '!');
Das Ergebnis in der Variable wird folgendes sein:
`
111
!222
!333
!444
`;
Verhalten des Punkts
Der Befehl '.' fängt in einer mehrzeiligen
Zeichenkette keine Zeilenumbruchzeichen:
let res = str.replace(/./g, '!');
Das Ergebnis in der Variable wird folgendes sein:
`
!!!
!!!!
!!!!
!!!!
`;
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:
let res = str.replace(/[\s\S]/g, '!');
Das Ergebnis in der Variable wird folgendes sein:
`!!!!!!!!!!!!!!!!!!`;
Zirkumflex (^)
Mit dem Modifikator 'm'
kann der Mehrzeilenmodus aktiviert werden.
In diesem Fall findet das Zirkumflex-Zeichen
den Anfang jeder Zeile:
let res = str.replace(/^/gm, '!');
Das Ergebnis in der Variable wird folgendes sein:
`
!111
!222
!333
!444
`;
Dollar-Zeichen
Der Befehl '$' im Mehrzeilenmodus
findet das Ende jeder Zeile:
let res = str.replace(/$/gm, '!');
Das Ergebnis in der Variable wird folgendes sein:
`
111!
222!
333!
444!
`;
Praktische Aufgaben
Gegeben sei die Zeichenkette:
`
abc
def
ghi
jkl
`;
Schreiben Sie einen regulären Ausdruck, der diese Zeichenkette in folgende verwandelt:
`
abc!
def!
ghi!
jkl!
`;
Gegeben sei die Zeichenkette:
`
abc
def
ghi
jkl
`;
Schreiben Sie einen regulären Ausdruck, der diese Zeichenkette in folgende verwandelt:
`
! abc
! def
! ghi
! jkl
`;
Gegeben sei die Zeichenkette:
`
abc
def
ghi
jkl
`;
Schreiben Sie einen regulären Ausdruck, der diese Zeichenkette in folgende verwandelt:
`!
abc
def
ghi
jkl
!`;
Gegeben sei die Zeichenkette:
`
abc
def
ghi
jkl
`;
Schreiben Sie einen regulären Ausdruck, der diese Zeichenkette in folgende verwandelt:
`!
! abc
! def
! ghi
! jkl
!`;
Gegeben sei die Zeichenkette:
`
abc
def
ghi
jkl
`;
Schreiben Sie einen regulären Ausdruck, der diese Zeichenkette in folgende verwandelt:
`!
abc!
def!
ghi!
jkl!
!`;
Gegeben sei die Zeichenkette:
`
abc
def
ghi
jkl
`;
Schreiben Sie einen regulären Ausdruck, der diese Zeichenkette in folgende verwandelt:
`
!abc
!def
!ghi
!jkl
`;