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?
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?
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.
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.