¿Cómo componer expresiones regulares con condición en Java?
Aug 30 2020
Condición :
- los números pueden ser enteros o dobles (8 dígitos en total)
- los números solo pueden estar separados por espacios (uno o muchos) y comas (0 o uno)
- las comas solo pueden ser números internos (no puede haber comas al principio y al final de una línea)
- puede haber espacios al principio de la línea (uno o muchos)
- puede haber espacios al final de la línea (uno o muchos)
lo que hago :
([\s]*\d+(\.{1}\d+)?[\s\,\s]+){7}(\d+(\.{1}\d+)?[\s]*){1}
^ this ^
Eso está bien, excepto por una condición.
En esta cadena obtengo true, pero necesito false:
String s1 = " 0 , 4.4 3.2,, 4.1 2 4 1 7.7";
No puedo hacer esto:
Los números pueden estar separados por una sola coma o sin coma, pero en este caso debe haber un espacio (uno o muchos).
Respuestas
1 Gryphon Aug 30 2020 at 06:23
Este es el que se me ocurrió para los espacios/comas (también eliminé algunas partes redundantes):
Pattern.compile("([\\s]*\\d+(\\.\\d+)?(?:\\s*,\\s*|\\s+)){7}(\\d+(\\.\\d+)?[\\s]*)");
Parece hacer lo que quiere con la muestra que proporcionó, al menos. (El uso de {1}generalmente está implícito para los lugares donde lo usó, así que los eliminé)