Multilineitate în expresiile regulate JavaScript
Expresiile regulate atunci când lucrează cu șiruri multiline au particularitățile lor. Să le înțelegem pe exemplul următorului șir, care conține caractere obișnuite, caractere de newline și tabulație:
let str = `111
222
333
444`;
Newline
Caracterele de newline pot fi
prinse cu comanda '\n':
let res = str.replace(/\n/g, '!');
Ca rezultat, în variabilă se va scrie următorul (spațiile dintre linii sunt tabulații):
`111! 222! 333! 444`;
Tabulare
Caracterele de tabulare pot fi
prinse cu comanda '\t':
let res = str.replace(/\t/g, '!');
Ca rezultat, în variabilă se va scrie următorul:
`
111
!222
!333
!444
`;
Funcționarea punctului
Comanda '.' pentru șiruri
multiline nu prinde caracterele de newline:
let res = str.replace(/./g, '!');
Ca rezultat, în variabilă se va scrie următorul:
`
!!!
!!!!
!!!!
!!!!
`;
Orice caracter
Pentru a prinde toate caracterele dintr-un șir
multiline, se folosește un truc sub forma
combinației [\s\S]. O astfel de construcție va găsi
toate caracterele obișnuite și toate newline-urile:
let res = str.replace(/[\s\S]/g, '!');
Ca rezultat, în variabilă se va scrie următorul:
`!!!!!!!!!!!!!!!!!!`;
Circumflex
Cu ajutorul modificatorului 'm'
se poate activa modul multiline.
În acest caz, circumflex-ul va prinde
începutul fiecărei linii:
let res = str.replace(/^/gm, '!');
Ca rezultat, în variabilă se va scrie următorul:
`
!111
!222
!333
!444
`;
Dolar
Comanda '
în modul multiline
va prinde sfârșitul fiecărei linii:
let res = str.replace(/$/gm, '!');
Ca rezultat, în variabilă se va scrie următorul:
`
111!
222!
333!
444!
`;
Probleme practice
Este dat șirul:
`
abc
def
ghi
jkl
`;
Scrieți o expresie regulată care va face din acest șir următorul:
`
abc!
def!
ghi!
jkl!
`;
Este dat șirul:
`
abc
def
ghi
jkl
`;
Scrieți o expresie regulată care va face din acest șir următorul:
`
! abc
! def
! ghi
! jkl
`;
Este dat șirul:
`
abc
def
ghi
jkl
`;
Scrieți o expresie regulată care va face din acest șir următorul:
`!
abc
def
ghi
jkl
!`;
Este dat șirul:
`
abc
def
ghi
jkl
`;
Scrieți o expresie regulată care va face din acest șir următorul:
`!
! abc
! def
! ghi
! jkl
!`;
Este dat șirul:
`
abc
def
ghi
jkl
`;
Scrieți o expresie regulată care va face din acest șir următorul:
`!
abc!
def!
ghi!
jkl!
!`;
Este dat șirul:
`
abc
def
ghi
jkl
`;
Scrieți o expresie regulată care va face din acest șir următorul:
`
!abc
!def
!ghi
!jkl
`;