Laden...

.NET Regex wie kommt man an die Ergebnisse

Erstellt von s4rge vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.719 Views
S
s4rge Themenstarter:in
69 Beiträge seit 2007
vor 9 Jahren
.NET Regex wie kommt man an die Ergebnisse

Hallo,

irgendwie stehe ich gerade etwas auf dem Schlauch mit .NET Regex .. ich will mit folgendem Regex Commandline Args selber splitten:
"(?<cmd>&quot;[&quot;]&quot;|\S) (?<prm>.)?

Regex reg = new Regex("(?<cmd>^\"[^\"]*\"|\\S*) *(?<prm>.*)?");

Sollte wohl erstmal richtig sein.

Auf einer Webseite habe ich einen Regextester gefunden der auf .NET basieren soll. dieser liefert folgendes Ergebnis:
Match $1 $2
--debug -jcmd0:"robocopy e:\VMs e:\test /mir"
$1: --debug
$2: -jcmd0:"robocopy e:\VMs e:\test /mir"

In PHP z.B. ist es wirklich extrem leicht an das $1 und $2 zu kommen, aber bei .NET ehrlich gesagt kp. Ich habe rumgegoogelt und nichts passendes gefunden :S

Kann mir bitte jemand sagen wie ich an die Werte komme bzw. mir nen paar Tipps geben?

MfG

F
10.010 Beiträge seit 2004
vor 9 Jahren

Ich habe rumgegoogelt und nichts passendes gefunden

Wirklich?
Regex-Klasse

Das ist der Link in der offiziellen Hilfe, und das Demo unten ist doch wohl wirklich selbst erklärend.
Genauso wie die entsprechenden Beschreibungen der einzelnen Funktionen.

S
s4rge Themenstarter:in
69 Beiträge seit 2007
vor 9 Jahren

naja das hab ich auch gefunden, allerdings funktioniert keines der beispiele, und die msdn docs sind meist nicht wirklich hilfreich geschweigeden selbsterklärent.

hatte x beispiele durch und keines liefert das gewünschte:

teste mal bitte folgendes:


string CmdArgs = "-jcmd0:\"robocopy e:\VMs e:\test /mir\" --debug";

Regex reg = new Regex("(?<cmd>\\d^\"[^\"]*\"|\\S*) *(?<prm>.*)?", RegexOptions.Compiled | RegexOptions.IgnoreCase);

int mi = 0;
            foreach (Match m in mc)
            {                
                foreach (Group g in m.Groups)
                {
                    Console.WriteLine(mi + ":g:" + g.Value);                    
                }

                mi += 1;
            }

bei mir kommt da folgender output:

0:g:-jcmd0:robocopy e:\VMs e:\test /mir --debug
0:g:-jcmd0:robocopy
0:g:e:\VMs e:\test /mir --debug
1:g:
1:g:
1:g:

und das ist leider nicht was ich haben will.

mfg

2.223 Beiträge seit 2005
vor 9 Jahren

Hallo s4rge,

ok, was möchtest Du denn für einen Output haben, ich denke wenn wir das wissen können wir auch weiterhelfen

Viele Grüße
Lars

16.827 Beiträge seit 2008
vor 9 Jahren

Die MSDN ist mit Abstand die beste Dokumentation, die man im Bereich der Softwareentwicklung überhaupt finden kann. Zu behaupten, dass diese nich hilfreich ist oder selbsterklaerend.... Ahja..

Ich hab die Beispiele in der MSDN soeben ausprobiert: Klappt einwandfrei.
Zusammen mit dem Debugger ( [Artikel] Debugger: Wie verwende ich den von Visual Studio? ) findet man in unter 5 Minuten raus, wie das Ding funktioniert.....

2.207 Beiträge seit 2011
vor 9 Jahren

Hier sei auch der On-the-fly Regex-Tester: Regex-Lab erwähnt...vielleicht hilft der ebenfalls.

S
s4rge Themenstarter:in
69 Beiträge seit 2007
vor 9 Jahren

Morgen

@Lars:
der output sollte wie im eröffnungstext sein:

--debug
-jcmd0:"robocopy e:\VMs e:\test /mir"

der regex funktioniert, was mich nur stutzig macht ist, dass wenn ich das mit dem unteren code teste, immer mitten in den " " geteilt wird.

@ABT:
hast du mal darüber nach gedacht, dass interpretation von mensch zu mensch unterschiedlich ist? z.B. dem einen fällt es leicht mit nem bronstein klar zu kommen dem anderen hilft eher nen papula (mathe literatur für studium) .. oder vl ist das bsp "was ist was informatik" vs fachbücher für informatik. was ich damit sagen will ist nicht das sie schlecht ist! allerdings kommt nicht jeder damit ohne weiteres klar. ich finde beispiele immer sehr hilfreich und probiere die auch mal aus um das prinzip zu verstehen.

Btw. ich weis wie man anwendungen debugged ... und mal ehrlich aussagen ala

"Ich hab die Beispiele in der MSDN soeben ausprobiert: Klappt einwandfrei. sind mal so null komma null sagend.
hast du das bsp rauskopiert und f5 gedrückt ??? oder hast du das mit meinen eingaben getestet? Dann wäre es vl auch nett gewesen, mal dabei zu schreiben welches bsp. du verwendet hast.

@coffebean das sieht interessant aus .. ich werde das mal testen, danke 😃

795 Beiträge seit 2006
vor 9 Jahren
`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`