fork download
  1. /*
  2. Separar expresión matemática con expresiones regulares en Java
  3. https://es.stackoverflow.com/q/127195/127
  4. */
  5.  
  6. import java.util.List;
  7. import java.util.ArrayList;
  8. import java.util.regex.Pattern;
  9. import java.util.regex.Matcher;
  10.  
  11. class Ideone
  12. {
  13. public static void main (String[] args) throws java.lang.Exception
  14. {
  15. //variables
  16. final String texto = "1000000.315+5.8/(6.0+1-8*2.0)";
  17. //variables para el regex
  18. final String regex = "[\\d.]+|[-+*/()]";
  19. final Pattern pattern = Pattern.compile(regex);
  20. final Matcher matcher = pattern.matcher(texto);
  21. //usamos este tipo para el resultado, pero puede ser el que prefieras
  22. final List<String> resultado = new ArrayList<String>();
  23.  
  24. //buscamos todas las coincidencias
  25. while (matcher.find()) {
  26. //agregando una por una a la lista
  27. resultado.add(matcher.group());
  28. }
  29.  
  30.  
  31. //podemos imprimir la lista
  32. System.out.println(resultado);
  33. }
  34. }
Success #stdin #stdout 0.1s 27824KB
stdin
Standard input is empty
stdout
[1000000.315, +, 5.8, /, (, 6.0, +, 1, -, 8, *, 2.0, )]