es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para que la expresión regular busque una o dos palabras después del nombre, puedes modificarla de la siguiente manera:

    re.findall('[A-Za-z]+(?: \w+){0,2} \d+ \w+', string)
    

    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 como John has got 6 cats, así como Susan has 3 dogs y Mike has 8 fishes.

Comments are closed.