3
respostas

Problemas ao usar o input para o regex (python3)

Olá a todos,

Consigo realizar a pesquisa de nomes numa boa quando utilizo a expressão regular diretamente no findall, mas ao fazer o exercicio, tenho problemas ao usar o input, e acho que é devido a minha versão do Python ser a 3..

o código está igual o de voces..

def buscar(nomes):
    print('Digite a expressao regular')
    expreg = input()
    nomes_concatenados = ','.join(nomes)
    print ('a string para busca é {}'.format(nomes_concatenados))
    resultado = re.findall(expreg, nomes_concatenados)
    print('o resultado obtido foi {}:' .format(resultado))

mas o retorno sempre é vazio...

ao fazer o debug, vi que a string está duplicando as barras e aspas, e aí ao funciona no findall.

nomes_concatenados = {str} 'Celso,Rodrigo'
expreg = {str} 'r\\'(R\\w+)\\''
re.findall(expreg, nomes_concatenados) = {list} <class 'list'>:[]
re.findall(r'(R\w+)', nomes_concatenados) = {list} <class 'list'>:['Rodrigo']

alguém consegue me dar uma dica de como capturar isso em Python 3?

3 respostas

Olá Rodrigo, tudo bem?

Você importou a biblioteca de expressões regulares (re)?

Se não importou, é só dar o comando: import re.

Rodei o código aqui na minha máquina e funcionou depois que importei essa biblioteca, tanto no Python2.7 quanto no Python3.

A única diferença é que no Python2.7, tive que passar a expressão como uma string no input.

estou usando o import re... como eu disse, quando coloco a expressão direto no findall, ele funciona... o problema é só quando eu uso uma variavel com a expressão regular...

farei mais alguns testes... obrigado pela ajuda.

Rodrigo, deveria funcionar igual. Que string você está passando para o input()?