Questão nº 46
Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 46)
Considere o seguinte código em JavaScript:
const regexp = /(f+)(\d?)(t*)/g;
const str = 'trf1trf2trf3trf4trf5';
const array = [...str.matchAll(regexp)];
console.log(array.length)
Ao ser executado, o código acima imprime na saída padrão do console:
- A1
- B2
- C3
- D4
- E5 (alternativa correta)
Resposta comentada
Gabarito Alternativa E
O método matchAll() em JavaScript, quando usado com uma expressão regular que possui a flag global (g), encontra todas as ocorrências não sobrepostas da expressão na string. Ele retorna um iterador de objetos de correspondência, que pode ser convertido em um array usando o operador ... (spread).
- (A) Incorreta: Esta seria a resposta se a flag
gestivesse ausente na expressão regular ou se fosse usado o métodomatch()sem a flagg, que retorna apenas a primeira ocorrência. A armadilha aqui é não considerar o comportamento global dematchAllcom a flagg. - (B) Incorreta: Há mais de 2 ocorrências que se encaixam no padrão.
- (C) Incorreta: Há mais de 3 ocorrências que se encaixam no padrão.
- (D) Incorreta: Há mais de 4 ocorrências que se encaixam no padrão.
- (E) Correta: A expressão regular
/(f+)(\d?)(t*)/gbusca por:(f+): Uma ou mais letras 'f'.(\d?): Opcionalmente, um dígito.(t*): Opcionalmente, zero ou mais letras 't'./g: A flag global garante que todas as correspondências sejam encontradas.
Na string 'trf1trf2trf3trf4trf5':
f1é uma correspondência (f+, 1, t* vazio).f2é uma correspondência (f+, 2, t* vazio).f3é uma correspondência (f+, 3, t* vazio).f4é uma correspondência (f+, 4, t* vazio).f5é uma correspondência (f+, 5, t* vazio).
Existem exatamente 5 ocorrências que se encaixam no padrão, e matchAll com a flag g as encontra todas. O array.length será 5.
Fonte: FGV TRF1 2024 Analista Judiciário - Análise de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.