Witam.
Piszę sobie prosty parser wyrazen matematycznych. Mam problem w czesci z nawiasami. Otoz, gdy program wykryje w wyrazeniu np. (-34.32) to opuszcza nawiasy pod warunkiem ze przed nawiasem nie ma jakiejs funkcji trygonom./log. np. sin(43.42) - wtedy oblicza wartosc funkcji i ja podaje. I moj problem polega w opuszczaniu nawiasów bo nie dzialaja mi negacje wyrazen "sin", "cos", "tan" itp. Oto wyrazenie:
(^sin|^cos)\\( ?((\\-)?(\\d+\\.)?(\\d+)) ?\\)
wczesniej probowalem z (sin|cos), ale to tez nie dzialalo. jednak mysle ze to i tak by nie zadzialo bo '' na poczatku wyrazenia oznacza nowa linie.
Podaje reszte kodu funkcji szukajacej niepotrzebnych nawiasow:
regex = Pattern.compile("(^sin|^cos)\\( ?((\\-)?(\\d+\\.)?(\\d+)) ?\\)");
match = regex.matcher(commandMain);
// Jesli znaleziono
if (match.find() == true)
{
// commandCenter - wyrazenie wydzielone z calego wyrazenia zawierajace niepotrzebny nawias
commandCenter = match.group();
// Opuszczenie nawiasow
commandMain = commandMain.replace(commandCenter, match.group(2));
}
Macie jakis pomysl?
Pozdrawiam.