Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Localizaciones

17/29
Recursos

Esta clase nos va a servir para ver unos tips comunes de qué hacer y sobre todo qué no hacer con expresiones regulares, usando como ejemplo datos de posicionamiento en el mapa: latitud y longitud.

Aportes 62

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Seguramente en vez de restringir a WE y NS sería mejor dejar los caracteres [a-zA-Z]. Primero por si hay alguna línea del CSV que esté en minúsculas, y segundo porque quizá es un csv construido desde diferentes fuentes de datos y algunos estén en otros idiomas. Quizá mezcla español e inglés y la notación WE nos impediría acceder a los datos en español, porque sería OE.

-99.205646,19.429707,2275.10
-99.205581, 19.429652,2275.10
-99.204654,19.428952,2275.58

(\-?\d{1,3}\.\d{1,6},? ?){3}

-99 12' 34.08"W, 19 34' 56.98"N
-34 54' 32.00"E, -3 21' 67.00"S

(\-?\d{1,2} '?\d{1,2}' \d{1,2}\.\d{1,2}"[WNES],? ?){2}

15. Mis apuntes sobre: “Localizaciones”

Ejemplo 1:

^-?\d{1,3}\.\d{1,6},\s?-?\d{1,3}\.\d{1,6},.*$

Ejemplo 2:

^-?\d{1,3}\s\d{1,2}' \d{1,2}\.\d{2,2}"[WE],\s?-?\d{1,3}\s\d{1,2}' \d{1,2}\.\d{2,2}"[SN]$

Ejemplo 3:

Respecto al tercer ejemplo, tuve que hacer una pequeña modificación, ya que la página
me muestra palabras en español con tildes, así que las agregué como posibilidades dentro de
las palabras.

^[a-záéíóú]{3,}\.[a-záéíóú]{3,}\.[a-záéíóú]+$

Las expresiones regulares nos ayudan a checar que la cadena que estamos buscando tenga la estructura deseada, más no checara si es una palabra valida o no.
Es decir, queremos validar la palabra “perro”, pero solo usamos
[\w]{5}, entonces, nuestra ER encontrara todos los que cumplan con eso, bien puede ser Perro que es la palabra valida o pepsi que no es valida pero si tiene una longitud de 5.

Para buscar en map.what3words en un solo match sin repetir los patrones

^(([a-z]{3,})\.?){1,}$

🔹 No es trabajo de las expresiones regulares determinar si un valor es correcto, de eso se encarga el lenguaje de programación. Las expresiones regulares determinan si tiene la forma correcta.

  • Latitud y longitud:
-?\d{1,3}\.\d{1,6},\s?-?\d{1,3}\.\d{1,6}
  • Latitud, longitud y metros sobre el nivel del mar:
^-?\d{1,3}\.\d{1,6},\s?-?\d{1,3}\.\d{1,6},.*$
  • Formato W-E, N-S:
^-?\d{1,3}\s\d{1,2}'\s\d{1,2}.\d{1,2}"[WE],\s-?\d{1,3}\s\d{1,2}'\s\d{1,2}.\d{1,2}"[NS]$

👉 Super tip: puede pasar que al trabajar con csv, se tengan espacios entre columnas. Para evitar problemas añadir un \s? a la expresión regular.

esta expresión regular encuentra numeros entre el 1 al 100

^(100|[1-9]?[0-9])$

“La expresión revisa que este bien formado , el lenguaje (java,python,perl) revisa que el valor este correcto”

Importante tenerlo en cuenta.

Que genial se siente caundo ya lo entiendes,
I get it.

^-?\d{1,3}\s\d{1,2}' \d{1,2}.\d{2,2}"[WE], ?-?\d{1,3} \d{2,2}' \d{1,3}.\d{2,2}"[NS]```

uff super emocionado con regex!!!

```bash
//hace match
-99.205646,19.429707,2275.10
-99.205581, 19.429652,2275.10
-99.204654,19.428952,2275.58
//no hace match
-99,204654,19.428952,2275.58
-99-204654,19.428952,2275.58
99.204654,19.428952,2275.58
s99.204654,19.428952,2275.58

\-+\d{2,3}\.\d{2,6}\,\ ?\d{2}\.\ ?\d{2,6}\,\ ?\d{4}\.\d{2}

//VALIDAMOS LINEAS COMPLETAS
//hace match
-99 12' 34.08"W, 19 34' 56.98"N
-34 54' 32.00"E, -3 21' 67.00"S
//no hace match
-99 12' 34.08"W, 19 34' 56.98"Nsddddd

\-+\d{2}\ \d{2}\' \d{2}\.\d{2}\"[WE]\, \-?\d{1,2}\ \d{2}\' \d{2}\.\d{2}\"[NS]$

Las coordenadas en la tierra varían con valores de
-90 a 90 para la latitud y de -180 a 180 para la longitud., ángulos que superen este rango no son una coordenada valida en el planeta.

^-?\d{2,3}.\d{2,},\s?\d{2,3}.\d{2,},\d+.\d{2,2}$

^-\d{2,3}\s?\d{2,2}’\s?\d+.\d{2,2}"[WE],\s?-?\d{1,2}\s\d{1,2}’\s?\d{2,3}.\d{2,2}"[NS]

Para los casos en donde se requiera incluir las mayusculas

^([a-zA-Z]{3,}\.?){3,3}$

Con el agrupador se puede hacer tambien asi:

^([a-z]{3,}\.?){3,3}$

https://regexr.com/6ahkm

expression

^-?\d{1,3}\.\d{1,6},[-\s]?\d{1,3}\.\d{1,6},\s?\d+\.\d+$|^-?\d{1,3}\s\d{1,2}'\s\d{1,2}\.\d{1,2}"[WE],\s-?\d{1,3}\s\d{1,2}'\s\d{1,2}\.\d{1,2}"[NS]$

texto

-99.205646,19.429707,2275.10
-99.205581, 19.429652,2275.10
-99.204654,19.428952,2275.58
-99 12' 34.08"W, 19 34' 56.98"N
-34 54' 32.00"E, -3 21' 67.00"S

Buen dia gente

esta es mi version un poco reducida

^([a-z]{3,}\.){2,2}[a-z]{3,}

Para todos los casos seria:

^(-?)(\s?-?\d*.?\d*,){2,}(-?\s?\d+.\d+)|^(-?)(\s?\d*\s?\d*’?\s?\d*.?\d*[WNES],?){2,}(\d?\n?[WN]?)$|^([a-z]+.){2,2}([a-z]+)$

Mi solución a:

-99 12' 34.08"W, 19 34' 56.98"N
-34 54' 32.00"E, -3 21' 67.00"S
^[-]?\d{1,3}\s\d{1,2}' \d{1,2}\.\d{2,3}"[WE],\s?[-]?\d{1,3} \d{1,2}' \d{1,2}\.\d{1,3}"[NS]$

Una pequeña simplificación del último:

^([a-z]{3,}\.){2}[a-z]{3,}$

Simplificado:

^(\-?\d{1,3}\.\d{1,6},\s?){2}.*$

Excelente clase

  • -99.205646,19.429707,2275.10

  • -99.205581, 19.429652,2275.10

  • -99.204654,19.428952,2275.58

  • Coordenadas 1: \-?\d{1,3}\.\d{1,6},\s?\-?\d{1,3}\.\d{1,6}.*$

  • -99 12’ 34.08"W, 19 34’ 56.98"N
    -34 54’ 32.00"E, -3 21’ 67.00"S

  • Coordenadas 2: ^\-?\d{1,3}\s\d{1,2}'\s\d{1,2}\.\d{2,2}"[WE],\s?\-?\d{1,3}\s\d{1,2}'\s\d{1,2}\.\d{2,2}"[NS]$

“For the lols” @FreddyVega

Mi solucion:

-99.205646,19.429707,2275.10
-99.205581, 19.429652,2275.10
-99.204654,19.428952,2275.58

^-?(\d{1,3}\.\d{6,6},\ ?){2,2}\d{4,4}\.\d{2,2}$

-99 12' 34.08"W, 19 34' 56.98"N
-34 54' 32.00"E, -3 21' 67.00"S

^-?\d{1,3}\ \d{2,2}'\ ?\d{1,2}\.\d{2,2}"[WE],\ ?-?\d{1,2}\ \d{2,2}'\ \d{2,2}\.\d{2,2}"[NS]$

mi solucion de map.what3words.com/

^([a-z]{3,}.)([a-z]{3,}.)\w*$

Esta expresion de 1 a 180

^(180|[1-9]?[0-7]?[0-9])$

Desde Manizales Presente !!

Hay un error conceptual, si en las coordenadas se usa NS y WE no se debe indicar el signo - ya que esta implicito en la definición, esto nada tiene que ver con el tema de la clase que es muy interesante, es solo una precisión a nivel de información geográfica

no son radianes, son grados sexadecimales, escritos como rumbos

Es necesario escapar el guion?
el primer ejemplo lo hice sin escaparlo y funciono igual.

Gracias por el enlace! Alberto Alcocer. Yo también soy un apasionado de los mapas. A ver si entre todos los que nos gusta presionamos a Platzi para que haga una carrera temática sobre WebMapping. Hay mucho que aprender. Leaflet u OpenLayer, Qgis, Python para GIS, etc.

esta es mi expresion del ultimo ejemplo
gravel.notes.handbag

^[a-z]{3,}([\.][a-z]+[\.][a-z]+)$
^\-?\d{1,3}\.\d{1,6},\s?\-?\d{1,3}\.\d{1,6},.*$ para seleccionar una linea con longitud y latitud
^\-?\d{1,3}\s\d{1,2}' \d{1,2}\.\d{2,2}"[WE],\s?\-?\d{1,3}\s\d{1,2}' \d{1,2}\.\d{2,2}"[NS]$

la expresión regular revisa que el formato sea el correcto, el lenguaje de programación revisa que los valores sean los correctos

^-?\d{1,3}.\d{1,6},\s?-?\d{1,3}.\d{1,6},.*$ Coordenadas
-?\d{1,3}\s\d{1,2}’ \d{1,2}.\d{2,2}"[WE],\s-?\d{1,3}\s\d{1,2}’ \d{1,2}.\d{2,2}"[SN]
^[a-z]{1,}.[a-z]{1,}.[a-z]{1,}

^(\-?\d{1,3}(\s\d{1,2}'?(\.\d{2,2})?){2}"[WENS],?\s?){2}$

(\-?[\d]{1,3}\s[\d]{2}'\s[\d]{1,2}\.[\d]{2}"[WENS],?\s?){2}

mi expresion regular para el ejemplo
-99 12’ 34.08"W, 19 34’ 56.98"N
-99 12’ 34.08"E, 19 34’ 56.98"S

^\-?(\d{1,3}['"]?[.]?[A-Z]?[,]?[\s]?){8,8}$

Aquí mi expresión regular para encontrar los dos tipos de coordenadas (Se ve loco, pero funciona c:)

^\-?\d{1,3}[\. ]\d{1,6}[,'] ?\d{1,3}[\. ]\d{1,6}[,"][W,ESN]?[,]?[ ]?(\-?\d{1,3}[\. ]\d{1,6}[,'] ?\d{1,3}[\. ]\d{1,6}[,"][W,ESN]?[,]?[ ]?)?(\d{1,6}\.\d{1,3})?$```

las tres coordenadas unidas
^[\-]?(\d{1,3}\.\d{1,6}[,]\s?){2,2}.*$|^[\-]?\d{1,3}\s\d{1,2}'\s\d{1,2}\.\d{1,2}"[WE],\s[\-]?\d{1,3}\s\d{1,2}'\s\d{1,2}\.\d{1,2}"[NS]$|^[a-z]{3,}\.[a-z]{3,}\.[a-z]{3,}

Muy buena clase

^([a-z]{3,}\.){2,3}.[a-z]{3,}$
gravel.notes.handbag
reaming.embeds.rats```

Cuando he probado la expresión -? en VS Code, no lo detectaba, lo que hice fue quitarle el \

Mientras que, cuando he usado Sublime, sí lo detectaba.

¿Alguien saber el porqué, o es una opción que debo de habilitar/deshabilitar de cada editor?

excelente

Gran clase, Alberto, gracias.

Muy bien.

excelente

En google maps me sale esta direccion:
11°44’53.6"S 74°39’44.2"W

Haciendo la transformacion con regex

^\d{1,3}°\s?\d{1,2}'\s?\d{1,2}\.\d{1,2}"[NSWE]\s\d{1,3}°\s?\d{1,2}'\s?\d{1,2}\.\d{1,2}"[NSWE]$
-?\d{1,3}\.\d{1,6},\s?.*

Está interesante ese proyecto de las localizaciones con 3 palabras. Yo la usaría con mi mamá.

Muy buena explicación, se comprendieron como establecer la búsqueda de estos patrones de ubicación y muchas gracias por compartir la herramienta what3words, la cual es una manera interesante de establecer puntos en el mapa mundial.

^((\-?\d{1,3})\s(\d{1,2}')\s(\d{1,2}\.\d{2}")[WE])\,\s?((\-?\d{1,3})\s(\d{1,2}')\s(\d{1,2}\.\d{2}")[NS])$

¿Como hago si una de las palabras me arroja una letra con acento? Asi:

impresos.arrepiente.deberá

No entra en la clase [a-z]

\-?\d{1,3}\s\d{1,3}'\s\d{1,3}\.\d{2,2}"[WE],\s?\-?\d{1,3}\s\d{1,3}'\s\d{1,3}\.\d{2,2}"[NS]$

Locaciones

  • -?\d{1,3}.\d{1,6},\s?-?\d{1,3}.\d{1,6},.*
  • -?\d{1,3}\s\d{1,2}’ \d{1,2}.\d{2}"[WE], -?\d{1,3}\s\d{1,2}’ \d{1,2}.\d{2}"[NS]

Otra forma de hacer la segunda parte

(\-?\d{1,3}\s?\d{1,2}\'\s?\d{1,2}\.\d{2,2}\"[W|E|N|S]\,?){1,2}

Otra forma de seleccionar la primer parte

(\-?\d{1,3}\.\d{1,6},\s?){1,2}
mi regex para encontrar primer sección de formatos de coordenadas:

(-?\d{1,2}\.\d{1,6},){1,2}(\d+\.\d{1,6})?

-99.205646,
19.429707,2275.10
-99.205581,19.429652,2275.10
-99.204654,19.428952,2275.58

mi regex para encontrar segunda sección de formatos de coordenadas:

^-?\d{1,3}\s\d{1,2}'\s\d{1,2}\.\d{1,2}"[WE],\s-?\d{1,3}\s\d{1,2}'\s\d{1,2}\.\d{1,2}"[NS]$

-99 12' 34.08"W, 19 34' 56.98"N
-34 54' 32.00"E, -3 21' 67.00"N
asdf68 54' 32.00"E, -3 21' 67.00"N

mi regex para encontrar segunda sección de formatos de coordenadas:

^([a-z]{3,}\.){2}[a-z]+$

gravel.notes.handbag
reaming.embeds.rats
darting.social.snatched
caskets.employ.saving
honest.appealed.help

en VScode no necesitan escapar el guion.

quedaria asi

^-?\d{1,3}\.\d{1,6},\s?-?\d{1,3}\.\d{1,6},.*$

Excelente clase

Ejemplo N°1

^\-?\d{1,3}\.\d{1,6},\s?\-?\d{1,3}\.\d{1,6},.*$

Ejemplo N°3

\-?\d{1,3}\s\d{1,2}' \d{1,2}\.\d{2,2}"[WE],\s\-?\d{1,3}\s\d{1,2}' \d{1,2}\.\d{2,2}"[SN]$

Ejemplo N°3

^[a-z]{3,}\.[a-z]{3,}\.[a-z]{3,}
^[a-z]{3,}\.[a-z]{3,}\.[a-z][a-z][a-z]+
[a-z]{3,}\.?

Gran clase, la necesitaba!