Analise a função a seguir. preg_match('/^(\d{1,2}([a-z]+))(?...
preg_match('/^(\d{1,2}([a-z]+))(?:\x*)\X+ (?=20[0-9]0)/', '15x21cm Couchê 120g modelo 2010', $ocorrencias);
Quantos elementos o vetor $ocorrencias conterá após a execução da função?
A quantidade de itens certos é igual a
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - 3
Para entender a resposta dessa questão, precisamos analisar a função preg_match do PHP e a expressão regular fornecida. A função preg_match é utilizada para realizar uma busca por padrões em uma string através de uma expressão regular, e caso encontre o padrão, ela preenche o array $ocorrencias com os grupos capturados pela expressão.
A expressão regular fornecida é /^(\d{1,2}([a-z]+))(?:\x*)\X+ (?=20[0-9]0)/ e a string alvo é '15x21cm Couchê 120g modelo 2010'. Vamos decompor a expressão regular para entender seus componentes:
^- indica o início da string.(\d{1,2})- um grupo de captura que procura de um a dois dígitos numéricos.([a-z]+)- um subgrupo de captura dentro do primeiro grupo que procura uma ou mais letras minúsculas.(?:\x*)- um grupo de não captura que procura zero ou mais ocorrências do caractere\x(neste caso, parece ser um erro na expressão, já que\xseguido de dois dígitos hexadecimais normalmente é usado para denotar um caractere ASCII).\X+- procura um ou mais caracteres que não sejam espaços brancos.(?=20[0-9]0)- um lookahead positivo que busca a presença da sequência "20", seguida de qualquer dígito e terminando com "0".
O grupo (\d{1,2}([a-z]+)) captura "15x", onde "15" é um número de um ou dois dígitos e "x" são os caracteres minúsculos subsequentes. O subgrupo ([a-z]+) captura apenas o "x". O lookahead positivo (?=20[0-9]0) verifica se a sequência "2010" está no final da string, mas não a captura.
Portanto, após a execução da função preg_match, o vetor $ocorrencias conterá:
- O padrão inteiro capturado ("15x").
- O primeiro grupo de captura ("15x").
- O subgrupo de captura dentro do primeiro grupo ("x").
Isso resulta em um total de 3 elementos. Por isso, a alternativa C está correta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Gabarito: C) 3
Motivo:
preg_match() preenche $ocorrencias com:
- [0]: Trecho completo que casou (15x21cm Couchê 120g modelo).
- [1]: Primeiro grupo ((\d{1,2}([a-z]+)) → 15x.
- [2]: Subgrupo dentro de [1] ([a-z]+) → x.
Por que não as outras?
- A/B: Ignoram grupos capturados.
- D: Não há quarto grupo.
Dica: Grupos sem ?: geram entradas no array.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo