Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

179
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!