Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

pesquisa regex

# -*- coding: UTF-8 -*-

import re

def cadastrar(nomes):
    print 'Digite o nome a ser listado:'
    nome = raw_input()
    nomes.append(nome)

def listar(nomes):
    print 'Listando nomes:'
    for nome in nomes:
        print nome

def remover(nomes):
    print 'Qual nome gostaria de remover?'
    nome = raw_input()
    nomes.remove(nome)

def alterar(nomes):
    print 'Qual nome vc gostaria de alterar?'
    nome_a_alterar = raw_input()

    if(nome_a_alterar in nomes):
        posicao = nomes.index(nome_a_alterar)
        print 'Digite novo nome:'
        nome_novo = raw_input()
        nomes[posicao] = nome_novo

def procurar(nomes):
    print 'Digite nome a procurar:'
    nome_a_procurar = raw_input()

    if(nome_a_procurar in nomes):
        print 'O nome "%s" está cadastrado na lista.' % (nome_a_procurar)
    else:
        print 'O nome "%s" não está cadastrado na lista.' % (nome_a_procurar)

def procurar_regex(nomes):
    print('Digite a expressão regular')
    regex = raw_input()
    nomes_concatenados = ''.join(nomes)
    resultados = re.findall(regex, nomes_concatenados)
    print(resultados)

def menu():
    nomes = []
    escolha = ''
    while(escolha != '0'):
        print 'Digite: 1 para cadastrar, 2 para listar, 3 para remover, 4 para modificar, 5 para procurar, 6 para expressão regular ou 0 para cancelar:'
        escolha = raw_input()

        if(escolha == '1'):
            cadastrar(nomes)
        if(escolha == '2'):
            listar(nomes)
        if(escolha == '3'):
            remover(nomes)
        if(escolha == '4'):
            alterar(nomes)
        if(escolha == '5'):
            procurar(nomes)
        if(escolha == '6'):
            procurar_regex(nomes)
        if(escolha == '0'):
            print 'Volte sempre!'
            exit()
menu()

Acontece isso:

Digite: 1 para cadastrar, 2 para listar, 3 para remover, 4 para modificar, 5 para procurar, 6 para expressão regular ou 0 para cancelar:
2
Listando nomes:
joao
jose
joaquim
maria
Digite: 1 para cadastrar, 2 para listar, 3 para remover, 4 para modificar, 5 para procurar, 6 para expressão regular ou 0 para cancelar:
6
Digite a expressão regular
jo
['jo', 'jo', 'jo']

Não deveria aparecer os três nomes seguidos? Não tô conseguindo sozinho entender o motivo, nem lendo as outras perguntas... O que exatamente eu tenho que fazer para funcionar?

1 resposta
solução!

Fala aí Guilherme, blz?

Não manjo muito de python mas pelo que entendi do método findall ele retorno uma lista somente com o que ele conseguiu "casar" da string.

Tente mudar para esse método finditer e veja se o resultado é o que vc espera.

Espero ter ajudado, e bons estudos.