/*
Separar expresión matemática con expresiones regulares en Java
https://es.stackoverflow.com/q/127195/127
*/
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class Ideone
{
{
//variables
final String texto
= "1000000.315+5.8/(6.0+1-8*2.0)"; //variables para el regex
final String regex
= "([\\d.]+)|[-+*/()]"; final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(texto);
//buscamos todas las coincidencias
while (matcher.find())
{
if (matcher.group(1) != null) //si se capturó algo en el grupo 1 (el primer conjunto de paréntesis)
{
System.
out.
println("Número: " + matcher.
group()); }
else
{
System.
out.
println("Símbolo: " + matcher.
group()); }
}
}
}
LyoKCVNlcGFyYXIgZXhwcmVzacOzbiBtYXRlbcOhdGljYSBjb24gZXhwcmVzaW9uZXMgcmVndWxhcmVzIGVuIEphdmEKCWh0dHBzOi8vZXMuc3RhY2tvdmVyZmxvdy5jb20vcS8xMjcxOTUvMTI3CiovCgppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CmltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsKIApjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJLy92YXJpYWJsZXMKCQlmaW5hbCBTdHJpbmcgdGV4dG8gPSAiMTAwMDAwMC4zMTUrNS44Lyg2LjArMS04KjIuMCkiOwoJCS8vdmFyaWFibGVzIHBhcmEgZWwgcmVnZXgKCQlmaW5hbCBTdHJpbmcgcmVnZXggPSAiKFtcXGQuXSspfFstKyovKCldIjsKCQlmaW5hbCBQYXR0ZXJuIHBhdHRlcm4gPSBQYXR0ZXJuLmNvbXBpbGUocmVnZXgpOwoJCWZpbmFsIE1hdGNoZXIgbWF0Y2hlciA9IHBhdHRlcm4ubWF0Y2hlcih0ZXh0byk7CiAKCQkvL2J1c2NhbW9zIHRvZGFzIGxhcyBjb2luY2lkZW5jaWFzCgkJd2hpbGUgKG1hdGNoZXIuZmluZCgpKQoJCXsKCQkJaWYgKG1hdGNoZXIuZ3JvdXAoMSkgIT0gbnVsbCkgLy9zaSBzZSBjYXB0dXLDsyBhbGdvIGVuIGVsIGdydXBvIDEgKGVsIHByaW1lciBjb25qdW50byBkZSBwYXLDqW50ZXNpcykKCQkJewoJCQkJU3lzdGVtLm91dC5wcmludGxuKCJOw7ptZXJvOiAgIiArIG1hdGNoZXIuZ3JvdXAoKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlPDrW1ib2xvOiAiICsgbWF0Y2hlci5ncm91cCgpKTsKCQkJfQoJCX0KCX0KfQ==