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

expressão regular

Boa noite! estou com uma duvida, quero buscar dentro da minha lista qualquer coisa que o usuário digitar, ex:

minha lista contem os dados: Junho, Julho, Agosto o usuário solicita pesquisar todas as palavras com J, como ficaria?

este é o código que estou tentando fazer, baseado no exercício.

valor de regex = J
nomes [Junho, Julho, Agosto]
def pesquisa(nomes): #pesquisar nome por expressão regular
    print('Digite a expressão regular')
    regex = raw_input()
    concatena = ' '.join(nomes) 
    resultado = re.findall(regex, concatena)
    print (resultado)

Vi perguntas parecidas mas nenhuma resposta clara sobre como resolver isto. desde já Obrigado.

4 respostas

Você quer procurar qualquer texto que comece com a letra "J"? Pode ser feito assim (teste no terminal do Python):

import re
nomes = ['Junho', 'Julho', 'Agosto']
texto  = ' '.join(nomes)
resultado =  re.findall(r'[J]\S*', texto)

É importante denotar que expressão regular é uma linguagem dentro da linguagem Python. Inclusive há um curso na Alura focado exclusivamente em expressão regular que você pode conferir aqui:

https://www.alura.com.br/curso-online-expressoes-regulares

No curso de Python a introdução de regexp foi mais para mostrar como ela se integra com esta linguagem.

Sucesso e bom estudo, meu aluno!

Obrigado pela Resposta Flavio, mas estou tentando fazer isso sem usar o parâmetro de pesquisa ("J") de forma Hard-code, desta maneira, porem sem sucesso.

def pesquisa(nomes): 
    print('Digite a expressão regular')
    regex = raw_input()
    concatena = ' '.join(nomes) 
    resultado = re.findall(r'[regex]\s*', concatena)
    print (resultado)
solução!

Então, o que eu dei foi a prova de conceito. Para fazer o que deseja basta fazer:

import re
nomes = ['Junho', 'Julho', 'Agosto']
texto  = ' '.join(nomes)
regex = 'J' 
resultado =  re.findall('['+ regex + ']\S*', texto)

Onde tem regex você lê do teclado com raw_input().

Sucesso e bom estudo meu aluno!

Muito Obrigado, era exatamente isso, entendi que tenho que concatenar a variável com a string.