Regex JAVA.

valverde12345
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 9 lat
  • Postów:8
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/'";

Kopiuj
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:

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

Niestety w wyniku wykonania kodu powyżej w wyniku dostaje

Kopiuj
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.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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).


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
valverde12345
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 9 lat
  • Postów:8
0

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

edytowany 1x, ostatnio: valverde12345

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.