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

Dúvida no Ex. 5 da Aula 7 - Expressão regulares

De acordo com o exemplo abaixo, nao e possivel exibir a palavra " convidar" quando e feito o uso da funcao re.findall(). Nao entendi o motivo. Poderia explicar?

>>> regex_url = r'(.*/perfis/\d+)/convidar$'
>>> resultado = re.findall(regex_url,'http://django.com/perfis/123/convidar')
>>> resultado
['http://django.com/perfis/123']
>>> resultado = re.match(regex_url,'http://django.com/perfis/123/convidar')
>>> resultado.group()
'http://django.com/perfis/123/convidar'
3 respostas

Oi Ftcandido! Vi sua dúvida, mas não estou na minha maquina. Assim que chegar ate ela eu investigo essa diferença. Enquanto isso continue o treinamento para não atrasar.

Abraço.

solução!

Oi Ftcandido,

O findall tem um comportamento diferente do match quando usamos grupos, isto é, quando temos o abre e o fecha parênteses. Seu retorno é quem está no grupo. Veja que o convidar$ está fora do grupo.

Se quisermos que o findall tenha o mesmo resultado do match precisamos remover o grupo da expressão regular.

import re

regex_url = r'.*/perfis/\d+/convidar$'
resultado = re.findall(regex_url,'http://django.com/perfis/123/convidar')
print resultado
# imprime ['http://django.com/perfis/123/convidar']
regex_url = r'(.*/perfis/\d+)/convidar$'
resultado = re.match(regex_url,'http://django.com/perfis/123/convidar')
print resultado.group()
#imprime http://django.com/perfis/123/convidar

Oi Ftcandido, tudo certo? Aguardo seu feedback para saber se fecho essa discussão. :) Bom estudo aí!!!!!