Java i wyrażenie regularne

0

Witam
Piszę program, który musi wypisać wszystkie komentarze typ /* */ z podanego pliku. Napisałem coś takiego:

Matcher m = Pattern.compile("/\\*.*\\*/").matcher(buffer);

Wszystko jest ok gdy komentarz jest w jednej linii np.
/* costam */
Natomiast gdy jest przedzielony znakiem nowej linii, Java już mi go nie wykrywa. Z jakiegoś powodu '.' nie wychwytuje znaku nowej linii. Ktoś mi może powiedzieć dlaczego tak się dzieje i jak to naprawić?
Pozdrawiam.

0

musisz wlaczyc flage DOTALL ktora powoduje ze . bedzie lapac nowe linie, robisz to tak:
"(?s)/\.\*/"

0

Dzięki za wyjaśnienie :)
Mam jeszcze jedno pytanie: wyrażenie regularne, które wkleiłem okazało się niepoprawne - oznaczało wszystko pączowszy od pierwszego wystąpienia sekwencji '/'
Więc je zmodyfikowałem na coś takiego "/\
[^/]\*/" . Niestety to wyrażenie działa wtedy gdy w środku komentarza nia ma żadnej gwiazdki ani żadnego slasha. Może ktoś wie jak napisać takie wyrażenie reg., które by oznaczało aż do napotkania */ po sobie.
Pozdrawiam.

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