Viacriadkovosť v regulárnych výrazoch JavaScript
Regulárne výrazy pri práci s viacriadkovými reťazcami majú svoje špecifiká. Poďme sa s nimi zoznámiť na príklade nasledujúceho reťazca, obsahujúceho obyčajné znaky, znaky konca riadka a tabulátory:
let str = `111
222
333
444`;
Koniec riadka
Znaky konca riadka je možné
zachytiť pomocou príkazu '\n':
let res = str.replace(/\n/g, '!');
Výsledkom do premennej sa zapíše nasledovné (medzery medzi riadkami sú tabulátory):
`111! 222! 333! 444`;
Tabulátor
Znaky tabulátora je možné
zachytiť pomocou príkazu '\t':
let res = str.replace(/\t/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
`
111
!222
!333
!444
`;
Funkcia bodky
Príkaz '.' pre viacriadkový
reťazec nezachytáva znaky konca riadka:
let res = str.replace(/./g, '!');
Výsledkom do premennej sa zapíše nasledovné:
`
!!!
!!!!
!!!!
!!!!
`;
Ľubovoľný znak
Na zachytenie všetkých znakov vo viacriadkovom
reťazci sa používa šikovný trik v podobe
kombinácie [\s\S]. Takáto konštrukcia nájde
všetky obyčajné znaky a všetky konce riadkov:
let res = str.replace(/[\s\S]/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
`!!!!!!!!!!!!!!!!!!`;
Strieška (^)
Pomocou modifikátora 'm'
je možné zapnúť viacriadkový režim.
V tomto prípade strieška bude zachytávať
začiatok každého riadku:
let res = str.replace(/^/gm, '!');
Výsledkom do premennej sa zapíše nasledovné:
`
!111
!222
!333
!444
`;
Dolár ($)
Príkaz '
vo viacriadkovom režime
bude zachytávať koniec každého riadku:
let res = str.replace(/$/gm, '!');
Výsledkom do premennej sa zapíše nasledovné:
`
111!
222!
333!
444!
`;
Praktické úlohy
Daný reťazec:
`
abc
def
ghi
jkl
`;
Napíšte regulárny výraz, ktorý z tohto reťazca vytvorí nasledujúci:
`
abc!
def!
ghi!
jkl!
`;
Daný reťazec:
`
abc
def
ghi
jkl
`;
Napíšte regulárny výraz, ktorý z tohto reťazca vytvorí nasledujúci:
`
! abc
! def
! ghi
! jkl
`;
Daný reťazec:
`
abc
def
ghi
jkl
`;
Napíšte regulárny výraz, ktorý z tohto reťazca vytvorí nasledujúci:
`!
abc
def
ghi
jkl
!`;
Daný reťazec:
`
abc
def
ghi
jkl
`;
Napíšte regulárny výraz, ktorý z tohto reťazca vytvorí nasledujúci:
`!
! abc
! def
! ghi
! jkl
!`;
Daný reťazec:
`
abc
def
ghi
jkl
`;
Napíšte regulárny výraz, ktorý z tohto reťazca vytvorí nasledujúci:
`!
abc!
def!
ghi!
jkl!
!`;
Daný reťazec:
`
abc
def
ghi
jkl
`;
Napíšte regulárny výraz, ktorý z tohto reťazca vytvorí nasledujúci:
`
!abc
!def
!ghi
!jkl
`;