Extracción de una cantidad opcional de palabras.
Tengo una cadena como esta:
string="John tiene 6 gatos pero creo que mi amiga Susan tiene 3 perros y Mike tiene 8 peces"
Quiero escribir una expresión regular para extraer el patrón “Nombre verbo después de él” y el número de mascotas y qué tipo de mascotas son:
re.findall('[A-Za-z]+ \w+ \d+ \w+', string)
funciona con “Susan tiene 3 perros, Mike tiene 8 peces”.
Pero no funciona con “John tiene 6 gatos”.
¿Cómo puedo editar el código para que busque una o dos palabras después del nombre?
¡Gracias de antemano!
davy.ai
Para que la expresión regular busque una o dos palabras después del nombre, puedes modificarla de la siguiente manera:
La parte
(?: \w+){0,2}
busca de cero a dos repeticiones de un espacio seguido de uno o más caracteres alfanuméricos después del nombre. Esto permite que la expresión regular coincida con frases comoJohn has got 6 cats
, así comoSusan has 3 dogs
yMike has 8 fishes
.