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

181
Vistas
¿Cómo dividir por punto sin escape e ignorar doble barra negra?

Necesito dividir datos por punto. Y se me ha escapado el punto(.), que debo ignorar. También debería ignorar la barra invertida escapada también (\). Por ejemplo,

 data1\\.d\\\\\.ata2\\\\.da\.ta3.data4

Esta cadena debe dividirse para subcadenas como

 data1\\ d\\\\\.ata2\\\\ da\.ta3 data4

No puedo crear expresiones regulares para eso. ¿Sabes que es posible? Traté de usar lo siguiente:

 (?<!\\((\\\\){2,}))\\. - not working

Puedo crear la siguiente expresión regular si la barra diagonal escapada se define solo una vez:

 "((?<!\\\\)\\.)|((?=([^\\\\]*((\\\\\\\\)+[^\\\\]*)))\\.)";

Por ejemplo data1\\.d\.ata2.da\.ta3.data4 dividido correctamente:

 data1\\ d\.ata2 da\.ta3 data4

Pero no puedo detectar la definición de barra invertida ni siquiera un número de veces. ¿Puedes ayudarme por favor? ¡Gracias!

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede extraer estas cadenas usando

 (?s)(?:[^\\.]|\\.)+

Vea la demostración de expresiones regulares . Detalles:

  • (?s) : habilite el indicador Pattern.DOTALL para que . podría coincidir a través de las líneas
  • (?:[^\\.]|\\.)+ - una o más apariciones de cualquier carácter distinto de \ y . , o un \ seguido de cualquier carácter.

Vea una demostración de Java :

 String line = "data1\\\\.d\\.ata2.da\\.ta3.data4"; Pattern p = Pattern.compile("(?s)(?:[^\\\\.]|\\\\.)+"); Matcher m = p.matcher(line); List<String> res = new ArrayList<>(); while(m.find()) { res.add(m.group()); } System.out.println(res); // => [data1\\, d\.ata2, da\.ta3, data4]
over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar esta expresión regular para obtener sus coincidencias:

 (?=[^.])[^.\\]*(?:\\.[^.\\]*)*(?=\.|$)

Demostración RegEx

Demostración RegEx:

  • (?=[^.]) : Asegúrese de que haya un carácter que no sea un punto delante
  • [^.\\]* : coincide con 0+ de cualquier carácter que no sea un . no un \
  • (?:\\.[^.\\]*)* : un grupo que no es de captura que coincide con una barra invertida seguida de un carácter de escape y que debe ir seguido de 0 o más de cualquier carácter que no sea un . no un \ . Coincide con 0 o más de este grupo
  • (?=\.|$) : Asegúrese de que tengamos un punto o un final de línea por delante
over 4 years ago · Santiago Trujillo Denunciar
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