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\x
seguido 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