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

Retorno da busca de uma expressão regular

Olá pessoal, tudo bom?

Pelo o que eu entendi, quando se usa o "^" em ER, significa que você fara uma busca onde a expressão deve se iniciar de acordo com o especificado, como por exemplo ^[pP] - Começar com p ou P.

Eu fiz o seguinte código:

def procurar_nome(nomes):
    print 'Digite o nome que procura: '
    nome = raw_input()
    lista_nomes = ' '.join(nomes)
    regex = r'^%s\w+' %(nome)
    resultado = re.findall(regex, lista_nomes)
    print resultado

A função receberá uma lista, eu transformo essa lista para que seja possível fazer o filtro com o regex e por fim eu exibo o resultado.

O problema é mais ou menos assim:

1- Cadastro o nome Pedro e depois João 2 - Ao tentar pesquisar por Pedro o programa retorna certo, mas ao tentar pesquisar por João ele retorna vazio [].

Ou seja, ele só retorna quando é o primeiro nome que foi adicionado a lista. Para ter o comportamento que eu espero, é necessário retirar o "^". Gostaria de saber o por quê?

2 respostas
solução!

Oi Murilo, tudo bem?

Note que na sua lista de nomes você está concatenando os nomes a uma string: lista_nomes = ' '.join(nomes).

Por isso, quando você tenta procurar por João, ele retorna vazio. Porque o nome João, não é o primeiro (^) da string.

Tudo bem, e você Yuri?

Eu achei que o (^) fosse para encontrar todos os nomes que começassem com P dentro da string, por exemplo. Mas lendo a sua resposta e refletindo um pouco, vi que nem faz sentido com o que eu estava querendo fazer.

Enfim, obrigado pela ajuda.