Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Outra dúvida no nosso amigo regex

O que está errado nessa linha de código:

resultado = re.findall(r'(\w+\z$)', 'Luiz,luiz,Sandra,Rebeca,Rodrigo,Leandra,Luiza')
>>> resultado
[]

Por que ele não retorna nenhum valor?

4 respostas

Luiz, o que exatamente você quer que retorne? \z não existe em regex no Python. Talvez você tenha querido dizer \Z, que pega no final da string, mas aí não haveria necessidade do $, que pega no final de uma linha ou string.

Oi Yan, desculpe a demora para responder. Seguinte: quero o retorno de todas as palavras que possuem 'z' no final.

solução!

Ah, entendi, Luiz! Como sua lista de nomes é somente uma string de uma linha com os nomes separados por vírgula, o \Z ou $ obrigatório não vai funcionar, porque aí só daria match se fosse a última coisa da string. O que a gente quer é pegar qualquer conjunto de letras que termine com z e uma vírgula, ou que esteja no final da string (onde não tem vírgula). Você pode usar a seguinte expressão regular:

r'([a-zA-Z]+z)(?:,|\Z)'

Essa regex está dividida em dois grupos. O primeiro, que é o que a gente vai capturar, indica que queremos qualquer sequência de letras (tem de haver pelo menos uma letra) de a a z, podendo ser maiúscula, mas que enfim termine com um z. O segundo grupo, que não capturamos (indicamos isso com o ?:), indica que o final do que queremos dar match tem que ser , ou um fim de linha.

Muitíssimo obrigado, Yan!! Valeu mesmo pela ajuda!!! Grande abraço.