Transcribo los correos de la práctica para que sólo los copien y peguen:
[email protected]
[email protected]
dominio.com
[email protected]
[email protected]
[email protected]
[email protected]
Introducción a las Expresiones Regulares
Todo lo que aprenderás sobre expresiones regulares
¿Qué son las expresiones regulares?
Aplicaciones de las expresiones regulares
Introducción al lenguaje de expresiones regulares
El lenguaje: caracteres, operadores, y construcciones
El caracter (.)
Las clases predefinidas y construidas
Los delimitadores: +, *, ?
Los contadores {1,4}
El caso de (?) como delimitador
Not (^), su uso y sus peligros
Reto: Filtrando letras en números telefónicos utilizando negaciones
Principio (^) y final de linea ($)
Uso práctico de Expresiones Regulares
Logs
Teléfonos
URLs
Mails
Localizaciones
Nombres(?) Reto
Usos avanzados en Expresiones Regulares
Búsqueda y reemplazo
Expresiones Regulares en lenguajes de programación
Uso de REGEX para descomponer querys GET
Explicación del Proyecto
Perl
PHP
Utilizando PHP en la práctica
Python
Java
Java aplicado
JavaScript
`grep` y `find` desde consola
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Adquiere por un año todos los cursos, escuelas y certificados por un precio especial.
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
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 94
Preguntas 7
Transcribo los correos de la práctica para que sólo los copien y peguen:
[email protected]
[email protected]
dominio.com
[email protected]
[email protected]
[email protected]
[email protected]
Cuando se habla de error de capa 8, se refiere al error que sucede (entre el teclado y la silla). osea, TU
esto.es.un.mail+gmail@mail.com
esto.es_un.mail@mail.com
esto.es_un.mail+complejo@mail.com
dominio.com
rodrigo.jimenez@yahoo.com.mx
ruben@starbucks.com
esto_no$es_email@dominio.com
no_se_de_internet3@hotmail.com
Patron
[\w\._]{5,30}\+?\w{0,10}@[\w\-\.]{3,}\.\w{2,5}
Explicación
[\w\._]{5,30} => que contengan de 5 hasta 30 caracteres alfanuméricos incluyendo _ y el .
\+? => puede contener un +
\w{0,10} => que contengan de 0 hasta 10 caracteres alfanuméricos
@ => que contenga una @
[\w\-\.]{3,} => que contengan de 3 o mas caracteres alfanuméricos incluyendo _ y el .
\. => que contenga un .
\w{2,5} => que contengan de 2 hasta 5
Viene al caso mencionar que es mejor dividir un gran problema en varios pequeños para resolverlos y juntar luego todo.
Ejemplos de correos y no correos que usa @beco :
[email protected]
[email protected]
@dominio.com
[email protected]
[email protected]
[email protected]
[email protected]
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.
[\w._]{5,30}+?[\w]{0,10}@[\w.-]{3,}.\w{2,5} Emails
my regex
^[\w\.]{5,30}\+?\w{0,10}@\w{3,}[\.\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
Dejo aqui mi solucion
^[\w\._\+\-]+@[\w\.\-]+\.\w{2,5}$
Le hice este cambio porque dejaba correos sin alias con más de 30 caracteres
Yo lo hice diferente:
[\w\._\-+]{5,30}@[\w\._\-+]{3,}\.\w{2,5}
así me quedó a mi
^.*[\.\-\_]*?@.*\.\w{2,5}.(\w{2,5})?$
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!
^[\w.-_+]+@\w*.\w{2,}.\w*
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}$
Esta es una expresión regular que formule para identificar un correo electronico 🤓
^[\w\.\+]+@([\w\.]+)$
Los errores capa 8 😂😂😂
El profesor tiene razón en cuanto a los editores de texto, en mi caso que uso el Visual Studio Code, también falla en seleccionar el “[email protected]”, pero sí utilizo un comando de Power Shell en Windows, si queda seleccionado. Éste sería la forma:
type filtro.txt | Select-String -CaseSensitive -Pattern ‘@[\w.-]{3,}?.\w{2,5}’
El comando Select-String si logra seleccionar la cadena con ‘.mx’ tal como está el Regex.
^[\S*]{5,30}@[\w]+\.[\w\.]+
Yo encontre esta solucion, creo esta bien, si le encutran fallas aganmelo saber.
Me esta cambiando totalmente la opinión que tenía de las expresiones regulares. Buenísimo el curso.
Mi expresión sencilla y que pasa todo los test de formatos de correo electrónico
^[\w\-_\.\+]+@\w+\.\w{2,5}[\.\w{2,5}]+
faltaría agregar la validación para un dominio bastante popular en China: 126 y 163 com
Es increible la forma en que el profesor Alberto explica las expresiones regulares. Ahora si me siento iluminado con sus explicaciones. A seguir aprendiendo
Mi expresión regular:
[\w\.\+]{5,}@[\w]{3,}\.\w*[\.\w]*
Yo lo hice así
"[\w-\.\+]+@([\w-]{2,}\.)+[\w-]{2,}"
[\w\.\-\+]{5,30}@[\w+\.]+
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)
/[\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]
Para encontrar emails:
[\w._]{5,30}+?\w*@\D{3,}
expression
^[\w\.\+]+@[\w]+(\.[\w]+){1,3}$
texto
[email protected]
[email protected]
dominio.com
[email protected]
[email protected]
[email protected]
[email protected]
resultado positivo
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
resultado excluido
dominio.com
[email protected]
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}$
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}
yo hice esta y también funciona
[\w.+]{3,30}@[\w.-]{3,}.\w{2,5}
Mi aporte el cual no toma la linea 73 que no es un correo
^[\w_.+]+@\w{3,}.\w{3,}.[\w{2,2}]$
Todo muy bien explicado
Mi ejemplo:
^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$
yo utilicé esta
^[\w\.\-\d\_\+]+@[\w\.]+$
[\w\._]{5,30}\+?[\w]{0,10}@[\w\.\-]{3,}\.\w{2,5}
[\w\._]{5,30}\+?[\w]{0,10}@
-> Tenemos una clase que me permita: Cualquier caracter que sea palabra, que tenga entre 5 y 30 caracteres, posteriormente tener un símbolo de ‘+’ (opcional) y que esta sea compuesta entre 0 y 10, el ‘@’ es obligatorioYo: ¿es o no es?
Profesor: es y no es
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 solución 😉
([a-z._+0-9])+@(([a-z.])+){1,2}
@[\w\-\.]{3,}\.\w{2,5}$
[\w\._]{5,30}\+?[\w]{0,10}@
[\w\._]{5,30}\+?[\w]{0,10}@[\w\-\.]{3,}\.\w{2,5}$
No para son para nada complejas.
Esta fue mi solución:
^[\.\w_]{5,30}\+?\w{0,10}@\w{3,}[\.\w]+$
Creo que esto es valido… (creo jajaja)
([\$?\w\.\+]{1,})?@[\w\.\-]{3,}?\.\w{2,5}\.?([\w\.]{2})?
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.
mails: [\w._]{5,30}+?[\w]{0,10}@[\w.-]{3,}.\w{2,5}
[\w._]{5,30}+?[\w]{0,10}@[^\d][\w.-]{3,}.\w{2,5}
Simplificando la búsquedas.
Solamente Dominios:
-> @.*.com[\W].*$
Solamente nombres de usuario:
-> [\w\._ñ]{5,30}@
E-mails Completos:
-> [\w\._ñ]{5,30}@.*.com[\W].*$
El correo de Freddy no entra en esta expresión regular.
.
Mi correo personal es [email protected], tampoco entraría
^\w{1,30}.@\w{2,}..\w{2,5}$
que tal les parece?
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.
^.*[\.\-\_]*?@.*\.\w{2,5}.(\w{2,5})?$
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}$
JAJAJA se sintio es odio por Java
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
Recomiendo generar data random de correos, yo descargue 1000 registros de la pagina mockaroo para realizar las pruebas correspondientes y la expresión la deje de la siguiente manera
[\w.]{2,30}+?\w{0,10}@[\w-]{1,}.\w{1,5}.?\w{0,5} 😃
Excelente.
Yo lo probé así:
[a-zA-Z\.\-\_0-9]{1,}?@[\w\.\-]{3,}\.\w{2,6}
Luego lo probé así: [\w.-_]{1,}?@[\w.-]{3,}.\w{2,6}
^[\w.\-]{2,}?\+?[\w]{0,10}@.*$
muchas gracias
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}
@\w+.\w*.?\w+
simbolos mas, simbolos menos, yo use esta expresion
^[\w].{2,30}[\.\-_]?@[\w\.\-].*[\.\w]{2,5}$
la mia 😄
\w+[^\w]?\w*@\w+\.\w{3,}```
un compañero ya nos ayudo con los correos 😃 https://platzi.com/comentario/1306574/
Error de Capa 8
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
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:
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 +
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.
El curso es de hace un par de años, por tanto se debe tener en cuenta que ahora si hay correos de 1 o 2 letras, ej .el correo de Leonidas Esteban ([email protected])
Mails
@[\w\.\-]{3,}\.\w{2,5}$
[\w\._]{5,30}\+?[\w]{0,10}@
#masclaronopuedesergraciasalcocer
Mi regex para encontrar mails:
^[\w\-\.\+]{5,35}@[\w\-\.\+]+$
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}
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.
Muy interesante este tema par poder hacer match con los correos
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}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.