No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Expresiones Regulares

Curso de Expresiones Regulares

Alberto Alcocer (Beco)

Alberto Alcocer (Beco)

Mails

16/29
Recursos

Quedamos en que ya podemos definir URLs, y dentro de las URLs están los dominios. No es infalible, pero es muy útil para detectar la gran mayoría de errores que cometen los usuarios al escribir sus emails.

Aportes 84

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Cuando se habla de error de capa 8, se refiere al error que sucede (entre el teclado y la silla). osea, TU

Viene al caso mencionar que es mejor dividir un gran problema en varios pequeños para resolverlos y juntar luego todo.

mi expresion:

^[A-z]+[\._\+\w]+@\w+[\.\w]+

Con esto no cuenta este string:“esto_no%[email protected]

Imprimir y regalarlos jaja

Definitivamente las expresiones regulares son una manera abreviada y potente para ahorrarnos código y realizar una búsqueda más rápida y concisa.

Resumen:
Clase usuario de email
[\w._]{5,30}+?[\w]{0,10}@
Expresado de forma natural:
Esta clase nos permite antes del @ cualquier caracter que sea palabra (digitos y letras) que tenga en 5 y 30 caracteres. Opcionalmente un simbolo + para gmail y que este compuesta en tre 0 y 10 caracteres.

Clase dominio de email
@[\w.-]{3,}.\w{2,5}
Expresado de forma natural:
Esta clase nos permite despues del @ cualquier caracter que sea palabra (digitos y letras) que incluya un punto, un guion, que sea de mas de 3 caracteres que sea lo mas corto posible y con la condicion que debe terminar en un punto y que nos tome el TLD de 2 a 5 caracteres

Expresion completa de un correo electronico:
[\w._]{5,30}+?[\w]{0,10}@@[\w.-]{3,}.\w{2,5}


Le hice este cambio porque dejaba correos sin alias con más de 30 caracteres

así me quedó a mi

^.*[\.\-\_]*?@.*\.\w{2,5}.(\w{2,5})?$

Gracias @Beco por lo compartido, ahroa que me encuentre de nuevo las regex en los cursos de machine learning haciendo scraping,los voy a entender a plenitud.

Dejo aqui mi solucion
^[\w\._\+\-]+@[\w\.\-]+\.\w{2,5}$

Encontre esto en internet y se los comparto:

RegEx email según w3 org

^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$

implementación del Estandard Official: RFC 5322:

^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$
[\w\._]{5,30}\+?[\w]{0,10}@[\w\.\-]{3,}\.\w{2,5}$

Expresión para buscar mails

Yo lo hice diferente:

[\w\._\-+]{5,30}@[\w\._\-+]{3,}\.\w{2,5}

Muy interesante este tema par poder hacer match con los correos

Hola buenas les comento que esta expresión regular planteada en la clase es buena, pero como bien dice el profe hay que probarla antes de mandarla a producción, viendo a detalle la expresión regular creada que es:
[\w._]{5,30}+?[\w]{0,10}@[\w.-]{3,}.\w{2,5}
Me di cuenta que hace match tambien los emails que empiecen con un punto como por ejemplo:
[email protected]
Así que tengan mucho ciudado!

my regex

^[\w\.]{5,30}\+?\w{0,10}@\w{3,}[\.\w{2,5}]+$
Las \*\*expresiones regulares\*\* (regex) son extremadamente útiles para validar, extraer o manipular direcciones de correo electrónico (\*\*mails\*\*). En el caso de los correos electrónicos, el formato es bastante estándar, pero pueden existir variaciones debido a diferentes reglas permitidas por los proveedores de correos. A continuación, te explico cómo usar expresiones regulares para manejar correos electrónicos. \### \*\*Estructura básica de un correo electrónico\*\* Una dirección de correo electrónico tiene la siguiente estructura: ``` <[email protected]> ``` \- \*\*Usuario\*\*: Puede contener letras, números, puntos (`.`), guiones (`-`), guiones bajos (`\_`), entre otros caracteres. \- \*\*Dominio\*\*: Generalmente contiene letras, números y puntos, separados por subdominios opcionales. \- \*\*Extensión\*\*: Por lo general, es una cadena de 2 a 6 caracteres (por ejemplo, `.com`, `.org`, `.info`). \### \*\*Expresión regular básica para validar un correo electrónico\*\* Un ejemplo simple de regex que valida una dirección de correo electrónico: ```regex ^\[a-zA-Z0-9.\_%+-]+@\[a-zA-Z0-9.-]+\\.\[a-zA-Z]{2,6}$ ``` \- `^`: Indica el inicio de la cadena. \- `\[a-zA-Z0-9.\_%+-]+`: Captura una secuencia de letras, números, puntos (`.`), guiones bajos (`\_`), porcentajes (`%`), más (`+`) o guiones (`-`) en la parte del usuario. \- `@`: El símbolo `@` que separa el nombre de usuario del dominio. \- `\[a-zA-Z0-9.-]+`: Captura el dominio que puede contener letras, números, puntos (`.`) o guiones (`-`). \- `\\.`: Un punto que separa el dominio de la extensión. \- `\[a-zA-Z]{2,6}`: La extensión del dominio, que suele ser de 2 a 6 caracteres (como `.com`, `.edu`, `.gov`). \- `$`: Indica el final de la cadena. \### \*\*Expresión regular avanzada para correos electrónicos\*\* Una expresión regular más completa que maneja casos más complicados podría ser: ```regex ^\[a-zA-Z0-9.\_%+-]+@\[a-zA-Z0-9.-]+\\.\[a-zA-Z]{2,6}$ ``` Esta versión maneja: \- Nombres de usuario con una amplia gama de caracteres permitidos. \- Dominios que pueden tener varios niveles, como `sub.dominio.com`. \- Extensiones de dominio que pueden tener 2 a 6 caracteres. \### \*\*Explicación detallada del regex\*\* 1\. \*\*Parte del usuario (`usuario`)\*\*: ```regex \[a-zA-Z0-9.\_%+-]+ ``` \- Acepta letras (mayúsculas y minúsculas), números, puntos (`.`), guiones bajos (`\_`), porcentajes (`%`), más (`+`) y guiones (`-`). \- El signo `+` asegura que haya al menos un carácter. 2\. \*\*El símbolo `@`\*\*: \- Se captura de forma literal con `@`. 3\. \*\*Parte del dominio (`dominio.extension`)\*\*: ```regex \[a-zA-Z0-9.-]+\\.\[a-zA-Z]{2,6} ``` \- El dominio puede contener letras, números, puntos y guiones. La expresión `\\.` captura el punto antes de la extensión. \- La extensión debe tener entre 2 y 6 caracteres. \### \*\*Ejemplos de correos electrónicos válidos\*\* \- `[email protected]` \- `[email protected]` \- `[email protected]` \- `[email protected]` \### \*\*Ejemplos de correos electrónicos inválidos\*\* \- `usuario@dominio` (sin extensión). \- `usuario@@dominio.com` (dos signos `@`). \- `[email protected]` (puntos dobles en el dominio). \### \*\*Aplicaciones comunes de expresiones regulares para correos\*\* 1\. \*\*Validación de formularios\*\*: Se utiliza para asegurarse de que el campo de correo electrónico sea válido antes de enviar un formulario web. 2\. \*\*Filtrado de correos electrónicos\*\*: En sistemas de correo o bases de datos, para extraer o listar direcciones de correo válidas. 3\. \*\*Extracción de correos electrónicos de texto\*\*: Al analizar un archivo de texto o una página web, las expresiones regulares pueden usarse para extraer todas las direcciones de correo electrónico. 4\. \*\*Normalización\*\*: Para limpiar y estandarizar direcciones de correo electrónico antes de almacenarlas o procesarlas. \### \*\*Ejemplo de uso en scripts\*\* Para extraer correos electrónicos de un texto en un archivo, podrías usar una expresión regular en un script de Python o Bash. Ejemplo en Python: ```python import re texto = """ Aquí hay algunos correos: <[email protected]>, <[email protected]> y <[email protected]>. """ \# Regex para extraer correos electrónicos patron = r'\[a-zA-Z0-9.\_%+-]+@\[a-zA-Z0-9.-]+\\.\[a-zA-Z]{2,6}' correos = re.findall(patron, texto) print(correos) ``` Este script devolvería una lista con todas las direcciones de correo encontradas en el texto. \### \*\*Conclusión\*\* Las expresiones regulares son una herramienta poderosa para trabajar con correos electrónicos, permitiendo desde la validación en formularios hasta la extracción en sistemas complejos. La flexibilidad del regex permite manejar la variedad de formatos que pueden tener los correos electrónicos mientras se asegura la exactitud en las aplicaciones donde se implementa.

Esta fue mi solución:

^[\.\w_]{5,30}\+?\w{0,10}@\w{3,}[\.\w]+$

este es mi expresion regular de los emails que estuve practicando con Alberto posdata espero que este bien jeje

<code>
[\w\.?]{5,30}\@[\w\.\-][\w][\w][\w]\.[\w][\w][\w] 

Las expresiones regulares lo son todo.

Exactamente conocer cómo se filtran y organizan los correos electrónicos nos servirá para hacer mejores proyectos. A continuación, les comparto una de las expresiones regulares que encontré para los mails:
   

la mia 😄

\w+[^\w]?\w*@\w+\.\w{3,}```
Simplificando la búsquedas.
Solamente Dominios:
-> @.*.com[\W].*$
Solamente nombres de usuario:
-> [\w\._ñ]{5,30}@
E-mails Completos:
-> [\w\._ñ]{5,30}@.*.com[\W].*$

Esta es la expresión regular que utilizo para validar los inputs con email y ha sido por efectiva.

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$

No entendí porque el + va por fuera de la primera clase, por que no se puede armar asi:

[\w._+], si se desea lo mismo, que antes del @ pueda tener estos caracteres. Y Adicional en que cambia que se le ponga o no el ?, entendí el concepto, pero no lo comprendo.

Corrección por si buscan que no les selecciones el correo que no es email:

^[\w\._]{5,30}\+?[\w]{0,10}@[\w\.\-]{3,}\.\w{2,5}$

Solo le agregué el inicio y cierre de tupla

^\w{1,30}.@\w{2,}..\w{2,5}$
que tal les parece?

Luego lo probé así: [\w.-_]{1,}?@[\w.-]{3,}.\w{2,6}

Yo lo probé así:
[a-zA-Z\.\-\_0-9]{1,}?@[\w\.\-]{3,}\.\w{2,6}

simbolos mas, simbolos menos, yo use esta expresion

^[\w].{2,30}[\.\-_]?@[\w\.\-].*[\.\w]{2,5}$

un compañero ya nos ayudo con los correos 😃 https://platzi.com/comentario/1306574/

^.*[\.\-\_]*?@.*\.\w{2,5}.(\w{2,5})?$

Todo un Crack, en diferentes proyectos siempre me he encontrado con las expresiones regulares y francamente prefería darle la vuelta a las Regex y buscar otra solución, ahora veo que era mas fácil y eficaz de lo que parece!

Mi expresión regular:

[\w\.\+]{5,}@[\w]{3,}\.\w*[\.\w]*
/[\w\._]{5,30}\+?[\w]{0,10}@[\w\.\-]{3,}\.\w{2,5}/g

[email protected]
[email protected]
dominio.com
[email protected]
[email protected]
esto_no[email protected]
[email protected]

Yo lo hice así

"[\w-\.\+]+@([\w-]{2,}\.)+[\w-]{2,}"

Mi expresión sencilla y que pasa todo los test de formatos de correo electrónico

^[\w\-_\.\+]+@\w+\.\w{2,5}[\.\w{2,5}]+

Creo que esto es valido… (creo jajaja)

([\$?\w\.\+]{1,})?@[\w\.\-]{3,}?\.\w{2,5}\.?([\w\.]{2})?

No para son para nada complejas.

Ligeramente diferente:

^[\w\._]{5,30}\+?[\w]{0,10}@\w{2,}\.\w{2,}(\.\w*)?$

Me parece bastante curioso porque en mi Visual Studio Code no marca lo siguiente:

"[email protected]": con lo indicado en la clase no me marca la parte antecedente al “+”, pero modificando la expresión regular retirando el “+” y colocándolo después del “” sí funciona, quedando de la siguiente manera:
[\w._+]{5,30}?[\w{0,10}]@[\w.-]{3,}.\w{2,5}

[email protected]”: con lo indicado en la clase no me marca todo el correo debido a que en la parte “{5,30}” presiento que se indica que los valores son >5 y <30 indicando que los valores deberán ser 6 a 29.

No sé si alguien tendrá el mismo problema, pero me parece correcto indicarlo por si las dudas.

\b[\w-]+(?:\.[\w]+){0,2}@[\w]+(?:\.[\w]+)*\b

Excelente.

JAJAJA se sintio es odio por Java

^[\w.\-]{2,}?\+?[\w]{0,10}@.*$

Bacan!

//correccion para aceptar com.mx, com.edu etc. solo eliminamos el ? del parametro dominio
[\w\._-]{5,30}\+?[\w]{0,10}@[\w\.\-]{3,}\.\w{2,5}

En mi caso decidí reducir la cantidad de caracteres que pueden haber antes del @, porque mi correo tiene sólo una letra 🤣.

^[\w\.\-\+]{1,40}@[\w\.]{4,30}$

Con esta expresión no es necesaria agregar los digitos despues del +. Ademas corrige el bug que acepta más de 30 caracteres:

^[\w\.\-_\+]{5,30}@[\w\.\-]{3,}\.\w{2,5}$

Con esta expresión solo acepta los 30, inlcuyendo correos con el signo +

Mails

  • Dominio: @[\w\.\-]{3,}\.\w{2,5}$
  • Usuario: [\w\._]{5,30}\+?[\w]{0,10}@

Mi solución 😉
([a-z._+0-9])+@(([a-z.])+){1,2}

Yo: ¿es o no es?
Profesor: es y no es

yo utilicé esta

^[\w\.\-\d\_\+]+@[\w\.]+$

Mi ejemplo:

^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$

Todo muy bien explicado

Mi aporte el cual no toma la linea 73 que no es un correo

^[\w_.+]+@\w{3,}.\w{3,}.[\w{2,2}]$

Les comparto una regex que me sirvo para el mail
\w+@[\w.-]{3,}?.\w{2,5}
y para que incluya “.” y “_” ahi va otra:
\w+.?\w+@[\w.-]{3,}?.\w{2,5}.\w{2}

Al patron de correo que muestra el profe, seria util agregarle el final de linea, para evitar que tenga caracteres pegados por accidente el correo al final

[\w\._]{5,30}\+?[\w]{0,10}@[\w.-]{3,}\.\w{2,5}$

El siguiente codigo detecta todo menos: [email protected]

ya que al no ser un emaill correcto no nos interesa ubicarlo a menos que espectificamente estemos buscando entradas que fueron similares a lo que seria un email.

import re

fh = open(r"C:\Users\Alfonso Zapata\jupyter\Cursos\Junio 2022\Curso de expresiones regulares - platzi\REGEX-master\liners.txt", "r").read()

fh

for line in re.findall('[\w\.\_\-]{5,30}\+?[\w]{0,10}?@[\w\.\-]{3,}?\.\w{2,5}\.?\w?\w?', fh):
    print(line)

Es increible la forma en que el profesor Alberto explica las expresiones regulares. Ahora si me siento iluminado con sus explicaciones. A seguir aprendiendo

Para que el match sea mas preciso, tendría que usarse ^$ para que el match sea un correo correcto ya que en la línea “[email protected]” lo correcto sería que la expresión no hiciera match después del $, por lo que la expresión mejorada sería, lo mismo que puso el profe pero con ^ al inicio y $ al final:

^[\w\._]{5,30}\+?[\w]{0,10}@[\w\.\-]{3,}\.\w{2,5}$
^[\S*]{5,30}@[\w]+\.[\w\.]+

Yo encontre esta solucion, creo esta bien, si le encutran fallas aganmelo saber.

^(\[\w\_.]\*\\+?\w{3,10})?@\[\w.]{3,}\\.\w{2,5}$ permite elegir solo las línes que cumplen con el patrón, la 73 no la elegirá
**My solution:** @\w+\[\\.]\w+

Yo hice esto :

`[\w\.\_\+]+@[\w]+\.\w{2,5}.* ` No se por qué mis regex tienden a ser mas cortas que la del profe, pero por ahora funcionan XD.
tu error durante la clase cuando tenia dos partes del dominio el correo ejemplo .com.mx era que admitias solo 5 caracteres luego del . hay 6, entonces lo mejor seria @\[\w\\.\\-]{3,}?(\\.\w{2,5}){1,2}
que buen curso

Lo resumí de la siguiente manera considerando que al final existe siempre un edu. mx, edu. ec o gov/gob.ec:

[\w\._]{10,30}\+?[\w]{0,10}@\w{3,10}(\.\w{2,3}){1,2}\S
^[\w.-_+]+@\w*.\w{2,}.\w*

Esta es una expresión regular que formule para identificar un correo electronico 🤓

^[\w\.\+]+@([\w\.]+)$

Los errores capa 8 😂😂😂

Me esta cambiando totalmente la opinión que tenía de las expresiones regulares. Buenísimo el curso.

faltaría agregar la validación para un dominio bastante popular en China: 126 y 163 com

[\w\.\-\+]{5,30}@[\w+\.]+

yo hice esta y también funciona

[\w.+]{3,30}@[\w.-]{3,}.\w{2,5}

muchas gracias

14. Mis apuntes sobre: “Mails”

Mi propuesta al problema del mail

^[\w+.*]{5,30}@\w+.\w+.?\w*$

Propuesta del profesor:

[\w\._]{5,30}\+?[\w]{0,10}@[\w\-\-]{3,0}\-\w{2,5}

Luego del “+” se pueden aceptar 40 caracteres en vez de 30, para solucionar esto podemos usar esta expresión :

^([\w\._](\+[\w])?){5,30}@[\w\.\-]{3,}\.\w{2,5}$

Así se asegura de que siempre haya como máximo 30 caracteres.

Mi regex para encontrar mails:

^[\w\-\.\+]{5,35}@[\w\-\.\+]+$