Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
.NET Regex wie kommt man an die Ergebnisse
s4rge
myCSharp.de - Member



Dabei seit:
Beiträge: 70

Themenstarter:

.NET Regex wie kommt man an die Ergebnisse

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

Zitat
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.
private Nachricht | Beiträge des Benutzers
s4rge
myCSharp.de - Member



Dabei seit:
Beiträge: 70

Themenstarter:

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von s4rge am .
private Nachricht | Beiträge des Benutzers
Lars Schmitt
myCSharp.de - Experte

Avatar #avatar-2240.jpg


Dabei seit:
Beiträge: 2335
Herkunft: Witten

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16110

beantworten | zitieren | melden

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 - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2461
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hier sei auch der On-the-fly Regex-Tester: Regex-Lab erwähnt...vielleicht hilft der ebenfalls.
private Nachricht | Beiträge des Benutzers
s4rge
myCSharp.de - Member



Dabei seit:
Beiträge: 70

Themenstarter:

beantworten | zitieren | melden

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
Zitat
"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 :)
private Nachricht | Beiträge des Benutzers
TheBrainiac
myCSharp.de - Member

Avatar #avatar-3152.png


Dabei seit:
Beiträge: 832
Herkunft: /dev/null

beantworten | zitieren | melden

Parser für Kommandozeilenparameter (CommandLineArguments)
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"
private Nachricht | Beiträge des Benutzers