Witam serdecznie!
Zostało mi zadane zadanie, w którym z pliku .java muszę wyliczyć wszystkie użycia instrukcji if (czyli tyko te, który działają w kodzie i nie są oznaczone jako komentarz/ nie są błędami etc.). Program mam już napisany w pełni i działa, jednakże problemem są regexy. Wykonany przeze mnie jest chyba dosyć tragiczny. Nie wyszukuje mi bowiem wszystkich użyć ifa.
Pattern mój wygląda dokładnie następująco:
Pattern p = Pattern.compile("[^\\\\]\\s"+"if"+"[\\s(]");
(jest to jeden z dziesiątek, których napisałem i który na obecną chwilę "coś" wyszukuje)
Program, który jest odpowiedzialny za ocenę wyrzucił mi zaś taki protokół błędów:
wyszukiwanie if - zle wyniki, gdy kod =
{
if (a > b) d = "wariant"; int pif; int piiif; int ifxxx; int ifc; if(a>b)if(c>d) x = 1;
}( expected 3 but was 1 )
zmniejszenie punktacji = -3
GDY: Utworzono obiekt Finder
- wyszukiwanie if - zle wyniki gdy instrukcja if jest w komentarzu; kod =
{
//if if (a>b) c = 1; /* if (a>b) c = 1; */
}( expected 0 but was 1 )
GDY: Utworzono obiekt Finder
- wyszukiwanie if - zle wyniki, gdy instrukcja if jest w cudzyslowie; kod =
{
"if (a>b) c = 1;"; "if(a)c=1;", " if (a>b) c = 1;"; " if(a)c=1;"
}( expected 0 but was 2 )
GDY: Utworzono obiekt Finder
- wyszukiwanie ciągów wariant - zle wyniki, gdy kod =
if (a>b) c = 1; d = "wariantwariantwariant" //subwariant
( expected 4 but was 1 )
GDY: Utworzono obiekt Finder
- wyszukiwanie ciągów wariant - zle wyniki, gdy kod =
if (a>b) c = 1; d = "wariant"; e= "wariant"; f = "wariant wariant";
( expected 4 but was 1 )
Piszę więc do was z prośbą o pomoc z regexem, aby działał również dla podanego przykładu.
Z góry dzięki!
@Edit: Chyba pomyliłem działy. Byłaby możliwość przeniesienia tematu do Newbie? Przepraszam za kłopot.