Wielowierszowość w wyrażeniach regularnych JavaScript
Wyrażenia regularne podczas pracy z wielowierszowymi ciągami znaków mają swoje specyficzne cechy. Przyjrzyjmy się im na przykładzie następującego ciągu, zawierającego zwykłe znaki, znaki nowej linii i tabulacji:
let str = `111
222
333
444`;
Nowa linia
Znaki nowej linii można
złapać za pomocą polecenia '\n':
let res = str.replace(/\n/g, '!');
W rezultacie do zmiennej zostanie zapisane następujące (przerwy między wierszami - to tabulacja):
`111! 222! 333! 444`;
Tabulacja
Znaki tabulacji można
złapać za pomocą polecenia '\t':
let res = str.replace(/\t/g, '!');
W rezultacie do zmiennej zostanie zapisane następujące:
`
111
!222
!333
!444
`;
Działanie kropki
Polecenie '.' dla wielowierszowego
ciągu nie łapie znaków nowej linii:
let res = str.replace(/./g, '!');
W rezultacie do zmiennej zostanie zapisane następujące:
`
!!!
!!!!
!!!!
!!!!
`;
Dowolny znak
Aby złapać wszystkie znaki w wielowierszowym
ciągu, używa się sprytnej sztuczki w postaci
kombinacji [\s\S]. Taka konstrukcja znajdzie
wszystkie zwykłe znaki i wszystkie znaki nowej linii:
let res = str.replace(/[\s\S]/g, '!');
W rezultacie do zmiennej zostanie zapisane następujące:
`!!!!!!!!!!!!!!!!!!`;
Daszek
Za pomocą modyfikatora 'm'
można włączyć tryb wielowierszowy.
W tym przypadku daszek będzie łapał
początek każdego wiersza:
let res = str.replace(/^/gm, '!');
W rezultacie do zmiennej zostanie zapisane następujące:
`
!111
!222
!333
!444
`;
Dolar
Polecenie '
w trybie wielowierszowym
będzie łapać koniec każdego wiersza:
let res = str.replace(/$/gm, '!');
W rezultacie do zmiennej zostanie zapisane następujące:
`
111!
222!
333!
444!
`;
Zadania praktyczne
Dany jest ciąg:
`
abc
def
ghi
jkl
`;
Napisz wyrażenie regularne, które przekształci ten ciąg w następujący:
`
abc!
def!
ghi!
jkl!
`;
Dany jest ciąg:
`
abc
def
ghi
jkl
`;
Napisz wyrażenie regularne, które przekształci ten ciąg w następujący:
`
! abc
! def
! ghi
! jkl
`;
Dany jest ciąg:
`
abc
def
ghi
jkl
`;
Napisz wyrażenie regularne, które przekształci ten ciąg w następujący:
`!
abc
def
ghi
jkl
!`;
Dany jest ciąg:
`
abc
def
ghi
jkl
`;
Napisz wyrażenie regularne, które przekształci ten ciąg w następujący:
`!
! abc
! def
! ghi
! jkl
!`;
Dany jest ciąg:
`
abc
def
ghi
jkl
`;
Napisz wyrażenie regularne, które przekształci ten ciąg w następujący:
`!
abc!
def!
ghi!
jkl!
!`;
Dany jest ciąg:
`
abc
def
ghi
jkl
`;
Napisz wyrażenie regularne, które przekształci ten ciąg w następujący:
`
!abc
!def
!ghi
!jkl
`;