1
resposta

Achar palavras iniciando com 'b' em um texto utilizando expressões regulares

Seja o texto:

texto = '''
O teto de gastos é importante, disse a economista, para dar garantia e visibilidade para o investidor brasileiro e estrangeiro com relação ao comprometimento do governo em reduzir o seu nível de endividamento
O Auxílio Brasil totaliza R$ 400, sendo R$ 200 do Bolsa Família, R$ 100 que iria encontrar espaço através da PEC dos Precatórios, e outros R$ 100 por meio do extra-teto. Esse extra-teto não deveria ser discutido nesse momento porque eles iriam usar de uma contabilidade fictícia
'''

Eu utilizei o padrão:

pattern = r'b[a-z|A-Z]+'
print(re.findall(pattern, texto, flags=re.IGNORECASE))

Saída:

['bilidade', 'brasileiro', 'Brasil', 'Bolsa', 'bilidade']

O problema é que retorna palavras como ' bilidade' que não servem pois a palavra é na verdade responsaBILIDADE. Como modificar o padrao para pegar apenas palavras iniciando com b?

1 resposta

Olá Edson, tranquilo!

Eu não entendo muito de Regex mas consegui encontrar todas palavras que começam com b verificando se anteriormente existe algum caracter como espaço, tabulação, etc... Ficando assim:

pattern = r'\sb[a-z]+'
print(re.findall(pattern, texto, flags=re.IGNORECASE))

Saída:

[' brasileiro', ' Brasil', ' Bolsa']

Outra maneira que pode ser feito isso é

texto_dividido = texto.split(" ")
pattern = r'^b[a-z]+'
palavras_com_b=[]
for palavra in texto_dividido:
    find = re.match(pattern, palavra, flags=re.IGNORECASE)
    if find:
        palavras_com_b.append(find.group())
print(palavras_com_b)

Mas como eu disse, não entendo muito de regex... Se conseguir de outra maneira ficaria feliz em saber. Espero ter ajudado, bons estudos.