Regex JAVA.

0

Witam,
Mam następujący problem, próbuje za pomocą java.util.regex wyciągnąć, ze Stringa interesujące mnie informacje. Dla content="musicPath" wyrażenie regularne działa poprawnie, czyli zwraca "musicPath='C://Users/Adam/Music/'";

Pattern pattern = Pattern.compile(content+"='.*'");
Matcher m1 = pattern.matcher(settings);
		
while(m1.find()) {
	result = settings.substring(m1.start()+content.length()+2,m1.end()-1);
	break;
}
return result;

String content = "mp3Color"
String settings wygląda tak:

musicPath='C://Users/Adam/Music/'mp3Color='220,200,200'mp3BrowserButtonsColor='200,200,200'null

Niestety w wyniku wykonania kodu powyżej w wyniku dostaje

220,200,200'mp3BrowserButtonsColor='200,200,200

Uzywam jako separatora ' . Próbowałem jako separatora używać "&", ale efekt był ten sam. W czym jest problem? Nie używałem regexpów w Javie wcześniej i ten wynik jest dla mnie trochę nielogiczny.
Proszę o jakieś wskazówki.

2

To co robisz jest po prostu głupie. Weź jak człowiek wyciągnij grupę! Poza tym nie używaj zachłannej * tylko *?. Bo teraz to ci łyknie tyle ile sie tylko da, więc jak masz na przykład więcej niż jeden cudzysłów w tekscie to sparuje ci pierwszy i ostatni, a nie pierwszy z tym najbliższym.

Grupy dodaje sie nawiasem a potem wyciąga z Matchera za pomocą .group(numer).

0

Dzieki!
Problemem był tryb zachłanny, teraz wszystko działa tak jak chciałem.

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