Closed isidoragutierrez closed 11 months ago
Ya que mi duda es sobre RegEx, aprovecho de sumar esta otra pregunta:
Cuál es la diferencia entre la expresión regular a(bc)*(de)f
y la expresión regular a(bc)*def
en términos de strings con los que hacen match?
Hola! La librería re
contiene la función re.sub
, con la que uno puede reemplazar caracteres en un string según una expresión regular. En el caso de querer quitar los números de un string, podemos hacer lo siguiente:
nuevo_string = re.sub(r'\d+', "", string)
Donde reemplazamos cualquier dígito (r'\d+'
) por un string vacío (""
).
Respondiendo tu segunda pregunta, ambas expresiones regulares no tienen ninguna diferencia ya que después del segundo paréntesis no le aplicas ningún operador. Si lo pensamos matemáticamente, es como la siguiente igualdad: $$a \cdot b \cdot c = (a \cdot b) \cdot c$$ donde el paréntesis no marca diferencia al menos que le apliquemos otra operación ya que no siempre se cumple que: $$(a \cdot b )^2 \cdot c = a \cdot b^2 \cdot c$$
Perfecto!! Muchas gracias!!!
Me surgió otra duda 😬,
Según los apuntes del curso, la expresión regular ab+c|de*f
hace match con abc
, abbbbc
, ... , df
, def
, deeeef
, etc.
Pero, dado que no se aplican paréntesis para agrupar, el meta-caracter |
no debería aplicarse únicamente a (entre) c
y d
?
El operador |
funciona un poco distinto a los otros operadores, ya que tiene una precedencia muy baja (puedes ver aquí que su es incluso más baja que la concatenación). En otras palabras, es básicamente lo último que se evalúa, por lo que toma todo lo que esté a su izquierda o a su derecha. Para que el match fuera como dices tú, tendría que ser de la siguiente forma: ab+(c|d)e*f
. Saludos!
Entiendo! Gracias!!!!
Prerrequisitos
(Marcar colocando una
X
entre los corchetes los ítems que ya hiciste, así:"[X]"
)Duda
Hola!! Tengo una duda sobre la pregunta 13 del compilado del examen, sobre expresiones regulares. ¿Por qué se considera que es óptimo utilizar expresiones regulares para reemplazar todas las palabras que tengan dígitos dentro, por su versión sin dichos dígitos? (ejemplo: "h2o4la1u" por "holau"). Y, ¿cómo se puede lograr eso utilizando expresiones regulares?
Muchas gracias de antemano!