Hallo,
irgendwie stehe ich gerade etwas auf dem Schlauch mit .NET Regex .. ich will mit folgendem Regex Commandline Args selber splitten:
"(?<cmd>"["]"|\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
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.
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
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
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.....
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hier sei auch der On-the-fly Regex-Tester: Regex-Lab erwähnt...vielleicht hilft der ebenfalls.
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
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 😃