Víceřádkovost v regulárních výrazech JavaScriptu
Regulární výrazy při práci s víceřádkovými řetězci mají své zvláštnosti. Pojďme se s nimi seznámit na příkladu následujícího řetězce, obsahujícího obyčejné znaky, znaky pro nový řádek a tabelátory:
let str = `111
222
333
444`;
Nový řádek
Znaky pro nový řádek lze
zachytit pomocí příkazu '\n':
let res = str.replace(/\n/g, '!');
Výsledkem bude do proměnné zapsáno následující (mezery mezi řádky jsou tabelátory):
`111! 222! 333! 444`;
Tabelátor
Znaky tabelátoru lze
zachytit pomocí příkazu '\t':
let res = str.replace(/\t/g, '!');
Výsledkem bude do proměnné zapsáno následující:
`
111
!222
!333
!444
`;
Funkce tečky
Příkaz '.' pro víceřádkový
řetězec nezachytává znaky pro nový řádek:
let res = str.replace(/./g, '!');
Výsledkem bude do proměnné zapsáno následující:
`
!!!
!!!!
!!!!
!!!!
`;
Libovolný znak
Pro zachycení všech znaků ve víceřádkovém
řetězci se používá chytrý trik ve formě
kombinace [\s\S]. Tato konstrukce najde
všechny obyčejné znaky a všechny znaky nového řádku:
let res = str.replace(/[\s\S]/g, '!');
Výsledkem bude do proměnné zapsáno následující:
`!!!!!!!!!!!!!!!!!!`;
Stříška
Pomocí modifikátoru 'm'
lze zapnout víceřádkový režim.
V tomto případě bude stříška zachytávat
začátek každého řádku:
let res = str.replace(/^/gm, '!');
Výsledkem bude do proměnné zapsáno následující:
`
!111
!222
!333
!444
`;
Dolar
Příkaz '
v víceřádkovém režimu
bude zachytávat konec každého řádku:
let res = str.replace(/$/gm, '!');
Výsledkem bude do proměnné zapsáno následující:
`
111!
222!
333!
444!
`;
Praktické úlohy
Je dán řetězec:
`
abc
def
ghi
jkl
`;
Napište regulární výraz, který vytvoří z tohoto řetězce následující:
`
abc!
def!
ghi!
jkl!
`;
Je dán řetězec:
`
abc
def
ghi
jkl
`;
Napište regulární výraz, který vytvoří z tohoto řetězce následující:
`
! abc
! def
! ghi
! jkl
`;
Je dán řetězec:
`
abc
def
ghi
jkl
`;
Napište regulární výraz, který vytvoří z tohoto řetězce následující:
`!
abc
def
ghi
jkl
!`;
Je dán řetězec:
`
abc
def
ghi
jkl
`;
Napište regulární výraz, který vytvoří z tohoto řetězce následující:
`!
! abc
! def
! ghi
! jkl
!`;
Je dán řetězec:
`
abc
def
ghi
jkl
`;
Napište regulární výraz, který vytvoří z tohoto řetězce následující:
`!
abc!
def!
ghi!
jkl!
!`;
Je dán řetězec:
`
abc
def
ghi
jkl
`;
Napište regulární výraz, který vytvoří z tohoto řetězce následující:
`
!abc
!def
!ghi
!jkl
`;