Closed fernandosmither closed 3 years ago
Hola @fernandosmither , recuerda que ^
marca el inicio de un string y que *
y +
son cuantificadores. Mi primera impresión fue que tu regex no está bien definida, porque lo que dices en el primer caso es "busca el inicio del string y después algo (?) que esté 1 o más veces justo antes del final" y en la otra dices "busca el inicio del string y después algo (?) que esté 0 o más veces justo antes del final".
Dándole otra vuelta, creo que lo que ocurre es que para Python ese "algo (?)" es justamente el inicio del string:
Espero se entienda 😅
Hola @fernandosmither , recuerda que
^
marca el inicio de un string y que*
y+
son cuantificadores. Mi primera impresión fue que tu regex no está bien definida, porque lo que dices en el primer caso es "busca el inicio del string y después algo (?) que esté 1 o más veces justo antes del final" y en la otra dices "busca el inicio del string y después algo (?) que esté 0 o más veces justo antes del final".Dándole otra vuelta, creo que lo que ocurre es que para Python ese "algo (?)" es justamente el inicio del string:
- "Busca que el inicio del string esté 1 o más veces justo antes del final": Esto solo es posible si el string tiene largo 0. Probé ese caso y justamente lo marca como match, así que vamos bien 👌
- "Busca que el inicio del string esté 0 o más veces justo antes del final": Como Python puede ver todos los casos como si el inicio del string estuviera 0 veces justo antes del final, esta expresión se reduce a "es un match si es que el string tiene final", o sea todos los strings posibles.
Espero se entienda 😅
Me hace todo el sentido del mundo, muchas gracias!
Una duda emergente, cómo probó que un string vacío le diese match? no se vería un output vacío, al igual que cuando no se encontró nada?
Usé tu mismo código (cambié el primer elemento en la lista por un string vacío), entonces se imprimió cumple con el patrón
. Esto significa que el patrón sí encontró algo, solo que "coincidió" con que s
era vacío.
Usé tu mismo código (cambié el primer elemento en la lista por un string vacío), entonces se imprimió
cumple con el patrón
. Esto significa que el patrón sí encontró algo, solo que "coincidió" con ques
era vacío.
Toda la razón, Gracias! 😄
Por qué en este ejemplo los operadores + y * traen resultados distintos?