Solucionado (ver solução)
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']