Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

Dúvida

Qual a diferença entre esse código:

>>> palavras = re.findall(r'(\d\w+)','2ois quatro oito 2ez')
>>> palavras
['2ois', '2ez']

e este:

>>> palavras = re.findall(r'(\b\d\w+)','2ois quatro oito 2ez')
>>> palavras
['2ois', '2ez']

Os dois apresentam o mesmo resultado.

1 resposta
solução!

A diferença entre os códigos se dá por conta do atalho \b. Ele especifica um word boundary, isto é, um limite de palavra. Limite de palavra pode ser um espaço, pontuação, final de linha, começo do texto ou final do texto. Desse modo, a segunda expressão regular é mais específica do que a primeira, já que exige que o dígito esteja no começo de uma palavra. Veja os exemplos que ilustram a diferença:

Sem o \b:

>>> palavras = re.findall(r'(\d\w+)','2ois quatro oito 2ez d3z')
>>> palavras
['2ois', '2ez', '3z']

Com o \b:

>>> palavras = re.findall(r'(\b\d\w+)','2ois quatro oito 2ez d3z')
>>> palavras
['2ois', '2ez']