Java + regular expressions - problem z negacjami

0

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.

0

Rozwiązałem problem w inny sposób: zamiast negacji podałem znaki jakie muszą byc przed nawiasem tj. liczby, +, -, *, /, i nowa linia. Wyrażenie wygląda następująco:
"(^|\\d+|\\+|\\-|\\*|\\/)(\\( ?((\\-)?(\\d+\\.)?(\\d+)) ?\\))"
Teraz programik poprawnie opuszcza nawiasy.

[green]

1 użytkowników online, w tym zalogowanych: 0, gości: 1