Multilinha em expressões regulares JavaScript
As expressões regulares, ao trabalhar com strings multilinha, têm as suas particularidades. Vamos analisá-las usando como exemplo a seguinte string, que contém caracteres comuns, caracteres de quebra de linha e tabulações:
let str = `111
222
333
444`;
Quebra de linha
Os caracteres de quebra de linha podem
ser capturados usando o comando '\n':
let res = str.replace(/\n/g, '!');
Como resultado, a variável armazenará o seguinte (os espaços entre as linhas são tabulações):
`111! 222! 333! 444`;
Tabulação
Os caracteres de tabulação podem
ser capturados usando o comando '\t':
let res = str.replace(/\t/g, '!');
Como resultado, a variável armazenará o seguinte:
`
111
!222
!333
!444
`;
Comportamento do ponto
O comando '.' numa string
multilinha não captura caracteres de quebra de linha:
let res = str.replace(/./g, '!');
Como resultado, a variável armazenará o seguinte:
`
!!!
!!!!
!!!!
!!!!
`;
Qualquer caractere
Para capturar todos os caracteres numa string
multilinha, usa-se um artifício na forma
da combinação [\s\S]. Essa construção encontrará
todos os caracteres normais e todas as quebras de linha:
let res = str.replace(/[\s\S]/g, '!');
Como resultado, a variável armazenará o seguinte:
`!!!!!!!!!!!!!!!!!!`;
Circunflexo (^)
Usando o modificador 'm'
é possível ativar o modo multilinha.
Nesse caso, o circunflexo capturará
o início de cada linha:
let res = str.replace(/^/gm, '!');
Como resultado, a variável armazenará o seguinte:
`
!111
!222
!333
!444
`;
Cifrão ($)
O comando '$' no modo multilinha
capturará o final de cada linha:
let res = str.replace(/$/gm, '!');
Como resultado, a variável armazenará o seguinte:
`
111!
222!
333!
444!
`;
Problemas práticos
Dada a string:
`
abc
def
ghi
jkl
`;
Escreva uma expressão regular que transforme esta string na seguinte:
`
abc!
def!
ghi!
jkl!
`;
Dada a string:
`
abc
def
ghi
jkl
`;
Escreva uma expressão regular que transforme esta string na seguinte:
`
! abc
! def
! ghi
! jkl
`;
Dada a string:
`
abc
def
ghi
jkl
`;
Escreva uma expressão regular que transforme esta string na seguinte:
`!
abc
def
ghi
jkl
!`;
Dada a string:
`
abc
def
ghi
jkl
`;
Escreva uma expressão regular que transforme esta string na seguinte:
`!
! abc
! def
! ghi
! jkl
!`;
Dada a string:
`
abc
def
ghi
jkl
`;
Escreva uma expressão regular que transforme esta string na seguinte:
`!
abc!
def!
ghi!
jkl!
!`;
Dada a string:
`
abc
def
ghi
jkl
`;
Escreva uma expressão regular que transforme esta string na seguinte:
`
!abc
!def
!ghi
!jkl
`;