RegEx Muster mehrfach treffen

Platekatel

Neues Mitglied
Hallo,

ich habe mir mittels
Code:
sc query
alle services ausgeben lassen und am Ende in einen langen String gewandelt.
Nun habe ich ein Pattern gebastelt, welches alle Angaben zu einem Service trifft. Ich dachte dies trifft dann mehrfach und ich kann mir jeden einzelnen Service in einer while Schleife ausgeben lassen. Leider trifft mein Pattern alle Services (den gesamten String in dem Fall) und nix ist mit while ...
:-(
Wie schaffe ich es, das ich jeden Service einzeln treffe und mir dann ausgeben kann?

Danke!!

Java:
String s = "SERVICE_NAME: AdobeARMserviceDISPLAY_NAME: Adobe Acrobat Update Service        TYPE               : 10  WIN32_OWN_PROCESS          STATE              : 4  RUNNING                                 (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)        WIN32_EXIT_CODE    : 0  (0x0)        SERVICE_EXIT_CODE  : 0  (0x0)        CHECKPOINT         : 0x0        WAIT_HINT          : 0x0SERVICE_NAME: AeLookupSvcDISPLAY_NAME: Anwendungserfahrung        TYPE               : 20  WIN32_SHARE_PROCESS          STATE              : 4  RUNNING                                 (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)        WIN32_EXIT_CODE    : 0  (0x0)        SERVICE_EXIT_CODE  : 0  (0x0)        CHECKPOINT         : 0x0        WAIT_HINT          : 0x0";
	        Pattern pattern = Pattern.compile("(SERVICE_NAME:\\s+\\w+DISPLAY_NAME:\\s+.*\\s+TYPE\\s+:\\s+\\d+\\s+\\w+\\s+STATE\\s+:\\s+\\d+\\s+\\w+\\s+.*\\s+WIN32_EXIT_CODE\\s+:\\s+\\d+\\s+.*\\s+SERVICE_EXIT_CODE\\s+:\\s+\\d+\\s+.*\\s+CHECKPOINT\\s+:\\s+.*\\s+WAIT_HINT\\s+:\\s+.*)");	        
	        Matcher matcher = pattern.matcher(s);
	        
	        while(matcher.find()){
	        	System.out.println("#grps: " + matcher.groupCount());
	            System.out.println("Group: " + matcher.group());
	        }
	}

Am Ende habe ich eine Gruppe mit dem gesamten String (allenServices) ...
Die while-Schleife läuft nur 1-mal ...

#grps: 1
Group: SERVICE_NAME: AdobeARMserviceDISPLAY_NAME: Adobe Acrobat Update Service TYPE : 10 WIN32_OWN_PROCESS STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0SERVICE_NAME: AeLookupSvcDISPLAY_NAME: Anwendungserfahrung TYPE : 20 WIN32_SHARE_PROCESS STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
 
Danke für deine Antwort - ich hate schon probiert, den .* in .*? zu wandeln - aber leider nur den Letzten.
Nun habe ich alle .* auf greedy und es funktioniert - vielen Dank!
 

Zurück
Oben