Laden...

Regulärer Ausdruck: Gruppen von mehreren Werten

Erstellt von Fabian vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.766 Views
Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 18 Jahren
Regulärer Ausdruck: Gruppen von mehreren Werten

Hallo Forum,

ich erhalte die folgenden zwei Zeilen:


Name                Pid Pri Thd  Hnd   Priv        CPU Time    Elapsed Time
OUTLOOK             772   8  27  760  17084     0:00:11.468     2:32:39.954

Ich möchte jetzt gernen einen regulären Ausdruck haben, der mir alle "Blöcke" der unteren Zeile wiedergibt. Kann mir da jemand einen Tipp geben? Ich steh grad total auf dem Schlauch!

Danke und Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 18 Jahren

Hallo,

hmm, ich Depp! Mit \s gehts ganz gut 🙂.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 18 Jahren

Hallo nochmal,

da ist doch noch ein Problem. Ich habs jetzt (Java) so gemacht:

String [] processInfo = line.split("\\s");

Jetzt erhalte ich in dem processInfo-Array aber nicht nur die Blöcke mit den anderen Zeichen, sondern auch Elemente, wo nur der Leerstring drin ist. Eigentlich klar, aber ich weiß jetzt nicht, wie ich das lösen könnte.

Kann mir jemand bei dem RegEx behilflich sein?

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

4.221 Beiträge seit 2005
vor 18 Jahren

Um für jeden Key z.B: einen Node in einem TreeView zu erstellen (und SubNode = Value)

würde der Code so aussehen (Danke an herbivore für die Regex-Einführung)



Regex r=new Regex(@"(?<Name>[^\s]+)\s*(?<Pid>[^\s]+)\s*(?<Pri>[^\s]+)\s*(?<Thd>[^\s]+)\s*" + @"(?<Hnd>[^\s]+)\s*(?<Priv>[^\s]+)\s*(?<CPUTime>[^\s]+)\s*" + @"(?<ElapsedTime>[^\s]+)\s*");

Match m = r.Match("OUTLOOK             772   8  27  760  17084     0:00:11.468     2:32:39.954");

foreach (string key in new string[]{"Name","Pid","Pri", "Thd", "Hnd", "Priv","CPUTime", "ElapsedTime"})
				{
					Group g=m.Groups[key];
					if (g!=null && g.Captures.Count>0)
					{
						TreeNode ndGroup=new TreeNode(key);
						TreeNode ndValue=new TreeNode(g.Value);
						ndGroup.Nodes.Add(ndValue);
						this.treeResult.Nodes.Add(ndGroup);
					}
				}


PS: Die Formatierung ist mir jetzt schnuppe... habe Hunger und weg ....

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

P
939 Beiträge seit 2003
vor 18 Jahren

Statt mit \s, muss mit \s+ gesplittet werden. Das sollte es gewesen sein.

4.221 Beiträge seit 2005
vor 18 Jahren

Original von Pulpapex
Statt mit :::

Thx Pulpalex.... da war ich wohl nicht der einzige mit Hunger.... komischerweise schluckt das Forum die Backslashes nicht jedesmal..

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...