Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2024

ProgramaçãoLinguagens de programação
Código
fg075570
Banca
FGV
Órgão
AL-SC
Ano
2024
Nível
Superior
Cargo
Analista Legislativo III - Analista de Sistemas
Expressões regulares são strings de texto especialmente codificadas, utilizadas como padrões para corresponder a conjuntos de strings.Considere as duas expressões regulares a seguir.Imagem associada para resolução da questãoA primeira expressão se refere a um número de telefone (padrão norte-americano, ex: 713-803-4094). A segunda expressão apresenta uma simplificação e generalização da codificação anterior, apresentando uma formulação mais concisa.Na expressão regular do CÓDIGO-02, a função do (+) “sinal de mais” representa
  1. Aum shorthand de caractere e indica que aquilo que precede o sinal de (+) pode ocorrer nenhuma ou mais vezes, opcionalmente.
  2. Bum lookahead positivo e indica que aquilo que precede o sinal de (+) pode ocorrer uma ou mais vezes.
  3. Cum quantificador e indica que aquilo que precede o sinal de (+) pode ocorrer uma ou mais vezes.
  4. Dum quantificador e indica que aquilo que precede o sinal de (+) pode ocorrer nenhuma ou mais vezes.
  5. Eum quantificador e indica que o que precede o sinal de (+) pode ocorrer nenhuma ou mais vezes, opcionalmente.
Revelar gabarito e comentário

GabaritoC — um quantificador e indica que aquilo que precede o sinal de (+) pode ocorrer uma ou mais vezes.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Expressões Regulares: Quantificadores

Gabarito: letra C. O sinal de + em expressões regulares é um quantificador que indica que o elemento que o precede pode ocorrer uma ou mais vezes. A alternativa C está correta ao afirmar exatamente isso, enquanto as demais confundem o + com outros conceitos, como o * (zero ou mais) ou com construções como lookahead e shorthand.

Expressões regulares (regex) são padrões utilizados para buscar e validar sequências de caracteres. Elas são compostas por caracteres literais e por metacaracteres, que possuem significados especiais. Os quantificadores são um tipo de metacaractere que define a quantidade de vezes que um elemento (um caractere, um grupo ou uma classe) pode aparecer na string correspondente. Os três quantificadores mais comuns são:

  • * (asterisco): indica que o elemento anterior pode ocorrer zero ou mais vezes.

  • + (sinal de mais): indica que o elemento anterior pode ocorrer uma ou mais vezes.

  • ? (ponto de interrogação): indica que o elemento anterior pode ocorrer zero ou uma vez (tornando-o opcional).

A diferença crucial entre * e + é que o * permite a ausência total do elemento, enquanto o + exige que ele apareça pelo menos uma vez. Por exemplo, na expressão a+, a string "b" não corresponde, pois não há nenhum 'a', mas "a", "aa" e "aaa" correspondem. Já na expressão a*, a string "b" corresponde, pois o 'a' pode ocorrer zero vezes.

No contexto da questão, o CÓDIGO-02 é uma simplificação do CÓDIGO-01, que representa um número de telefone norte-americano (ex: 713-803-4094). O CÓDIGO-01 provavelmente usa classes de caracteres e quantificadores específicos para cada parte do número (por exemplo, \d{3}-\d{3}-\d{4}). O CÓDIGO-02 generaliza isso, usando o + para indicar que um dígito (ou grupo de dígitos) pode aparecer uma ou mais vezes, tornando o padrão mais conciso e flexível.

A pegadinha da banca está em confundir o + com o *. O * é o quantificador que permite zero ou mais ocorrências, tornando o elemento opcional. O + exige pelo menos uma ocorrência. Essa distinção é fundamental e frequentemente cobrada em questões sobre expressões regulares.

Alternativa A — ❌ Incorreta

Afirma que o + é um "shorthand de caractere" e que indica "nenhuma ou mais vezes, opcionalmente". O + não é um shorthand (atalho para uma classe de caracteres, como \d para dígitos), e sim um quantificador. Além disso, a descrição "nenhuma ou mais vezes, opcionalmente" corresponde ao *, não ao +.

Alternativa B — ❌ Incorreta

Afirma que o + é um "lookahead positivo". Lookahead é uma construção de asserção que verifica se um padrão é seguido por outro, sem consumir caracteres (ex: a(?=b) corresponde a 'a' apenas se seguido por 'b'). O + é um quantificador, não uma asserção. A segunda parte da alternativa ("uma ou mais vezes") está correta, mas a classificação como lookahead a torna incorreta.

Alternativa C — ✅ Correta ⟵ GABARITO

Afirma corretamente que o + é um quantificador e que indica que o elemento que o precede pode ocorrer uma ou mais vezes. Esta é a definição exata do quantificador + em expressões regulares.

Alternativa D — ❌ Incorreta

Afirma que o + é um quantificador, mas indica "nenhuma ou mais vezes". Essa descrição corresponde ao quantificador *, não ao +. O + exige pelo menos uma ocorrência.

Alternativa E — ❌ Incorreta

Afirma que o + é um quantificador, mas indica "nenhuma ou mais vezes, opcionalmente". Novamente, essa descrição corresponde ao *, que permite zero ocorrências. O + exige pelo menos uma ocorrência, portanto não é opcional.

NÃO CAIA NESSA!

A banca explora a confusão clássica entre os quantificadores + e *. O * permite zero ou mais ocorrências (tornando o elemento opcional), enquanto o + exige uma ou mais ocorrências. As alternativas D e E descrevem o comportamento do *, não do +. Lembre-se: + = pelo menos um; * = zero ou mais.

PEGA ESSA DICA!

Para fixar, associe o + à ideia de "adição": algo deve ser adicionado pelo menos uma vez. Já o * (asterisco) pode ser "ignorado" (zero vezes). Na prova, ao ver +, pergunte-se: "o elemento anterior pode não aparecer?" Se sim, é *; se não, é +.

Gabarito: letra C

Link permanente: /questoes/fg075570