Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

382
Vistas
Regex para analizar el URI de Azure Data Lake Storage Gen2 para producción y pruebas con Azurite

En mi aplicación Java, uso Azure Data Lake Storage Gen2 para almacenamiento ( ABFS ). En la clase que maneja las solicitudes al sistema de archivos, obtengo una ruta de archivo como entrada y luego uso algunas expresiones regulares para extraer la información de conexión de Azure.

El URI de Azure Data Lake Storage Gen2 tiene el siguiente formato:

 abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path>/<file_name>

Uso la siguiente expresión regular abfss?://([^/]+)@([^\\.]+)(\\.[^/]+)/?((.+)?) para analizar un determinado ruta del archivo a extraer:

  • sistema de archivos
  • nombre de la cuenta
  • sufijo de cuenta
  • rutarelativa (ruta + nombre_archivo)

A continuación se muestra solo un código Java de prueba con comentarios que indican el resultado/valor en cada variable después de la coincidencia.

 private void parsePath(String path) { //path = abfs://storage@myaccount.dfs.core.windows.net/selim/test.csv Pattern azurePathPattern = Pattern.compile("abfss?://([^/]+)@([^\\.]+)(\\.[^/]+)/?((.+)?)"); Matcher matcher = azurePathPattern.matcher(path); if (matcher.find()) { String fileSystem = matcher.group(1); //storage String accountName = matcher.group(2); //myaccount String accountSuffix = matcher.group(3); //.dfs.core.windows.net //relativePath is <path>/<file_name> String relativePath = matcher.group(4); //selim/test.csv } }

El problema es cuando decidí usar Azurite , que es un servidor (emulador) compatible con Azure Storage API que me permite ejecutar pruebas unitarias contra este emulador en lugar de contra un servidor Azure real como se recomienda en la documentación de Microsoft.

Azurite usa un URI de archivo diferente al de Azure, por lo que esto hace que mi Regex anterior no sea válido para fines de prueba. El URI del archivo de Azurite tiene el siguiente formato:

 abfs[s]://<file_system>@<local_ip>:<local_port>/<account_name>/<path>/<file_name>

Azurite default account_name es devstoreaccount1 , por lo que aquí hay una ruta de ejemplo para un archivo en Azurite:

 abfs://storage@127.0.0.1:10000/devstoreaccount1/selim/test.csv

Si se analiza mediante la expresión regular anterior, esta será la salida, lo que provocará llamadas de API incorrectas al servidor de Azurite:

  • fileSystem: almacenamiento (correcto)
  • accountName: 127 (incorrecto, debería ser: devstoreaccount1 )
  • sufijo de cuenta: .0.0.1:10000 (incorrecto, debe ser una cadena vacía )
  • ruta relativa: devstoreaccount1/selim/test.csv (incorrecto, debería ser selim/test.csv )

¿Es posible tener una expresión regular de 1 que pueda manejar ambos URI o 2 expresiones regulares para resolver este problema?

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda