1
resposta

necessidade do metacaracter ?

Qual a necessidade do metacaracter ? na regex, se funciona perfeitamente sem ele? e sem a necessidade de flags adicionais apara indicar a posição do registro

Afinal, nos padrões indicados na aula, os separadores só aparecem uma vez depois das sequências. Quando se coloca o metacaracter ? é que o bug aparece

padrões:
99/99/9999
99.99.9999
99 99 9999

JavaScript:
/\d{2}[-/. ]\d{2}[-/. ]\d{4}/g ---> funciona
/\d{2}[-/. ]?\d{2}[-/. ]?\d{4}/g --> não funciona, pq adiciona a sequencia de CPF

Python:
r'\d{2}[-/. ]\d{2}[-/. ]\d{4}' --> funciona
r'\d{2}[-/. ]?\d{2}[-/. ]?\d{4}' --> não funciona, pq adiciona a sequencia de CPF

se o separador sempre aparece, ? é desnecessário e até prejudicial. No caso, porque faz as sequencias de CPF entrarem na busca

Ps.:
o metacarecter ?, só se torna necessário na regex, por causa do padrão 99999999 que está presente na base de dados, mas não é mencionado pela instrutora no vídeo. Sendo assim, faz sentido a regex com ?, $ e gm

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá, Luis! Como vai?

Ele é utilizado para indicar que o elemento anterior é opcional, ou seja, pode aparecer zero ou uma vez. No contexto da sua dúvida, ele se torna relevante quando você precisa lidar com variações no formato dos dados que está tentando capturar, como no caso de datas que podem ou não ter um separador.

No exemplo que você mencionou, o metacaracter ? é usado para lidar com a possibilidade de haver ou não um separador entre os números das datas. Isso é importante quando você tem formatos mistos no seu banco de dados, como datas que podem aparecer tanto com separadores quanto sem eles, como "22111996" no seu CSV.

Quando você diz que o padrão com ? não funciona, pode ser que a questão esteja relacionada à forma como a regex está sendo aplicada ou à necessidade de usar âncoras ou flags adequadas para o seu caso específico. Por exemplo, a flag m (multilinha) e o uso do $ para ancorar ao final de uma linha podem ser necessários para garantir que você está capturando apenas as datas no final de cada linha, evitando capturar CPFs ou outros números que se encaixem no padrão.

Portanto, o metacaracter ? é útil quando você precisa de flexibilidade para capturar padrões opcionais, especialmente em dados que não são uniformes. Experimente ajustar a regex com as âncoras e flags mencionadas para ver se isso resolve o problema que você está enfrentando.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.