2016-11-24 4 views
2

Ich habe folgendes Muster Format von Text:Regex passende Gruppe

  • [1/@DaysInMonth @FirstTitle] @SecondTitle

Die @DaysInMonth ist bekommt an, wie viele Tage sind es basierend auf dem ausgewählten Monat, @FirstTitle und die @ SecondTitle ist alphanumerisch.

habe ich versucht, mit den folgenden:

[\1(?<DaysInMonth>\d\s+) (?<FirstTitle>[\w\s \]+)\] (?<SecondTitle>[\w\s \]+)$] 

Aber es tat scheint nicht zu funktionieren. Das Übereinstimmungszeichen besteht aus 53 Zeichen. [Link]

Wie kann ich das lösen?

bearbeiten nach @ baddger964 Antwort:

ich so in meiner Anwendung verwenden möchten:

private Regex _regex = null; 

string value = "[1/30 Development In Progress] Development In Progress"; 

_regex = new Regex(@"\[\d+\/(?<DaysInMonth>\d+)\s(?<FirstTitle>[\w\s]+)\]\s(?<SecondTitle>[\w\s]+)").Match(value); 

string value1 = _regex.Groups["DaysInMonth"].Value; 
string value2 = _regex.Groups["FirstTitle"].Value; 
string value3 = _regex.Groups["SecondTitle"].Value; 

Ihre Antwort sehr geschätzt.

Vielen Dank.

+0

so etwas wie funktionierts: [(+ (?.? *) '\ (? \ d +)? [^]) \ d + /] \] $' – Neal

+0

Hallo Neal, Danke fürs Antworten, ich habe deine Lösung versucht, aber es hat auch nicht funktioniert. [Link] (https://regex101.com/r/7YPiUQ/3) – Reinhardt

+0

Froh, dass Sie eine Antwort bekommen haben, aber für zukünftige Referenz verwenden Sie nicht regex101.com, um für C# reguläre Ausdrücke zu testen. PHP, Javascript, Python Regex sind anders und es kann nicht für C# Regex testen. Es gibt ein gutes kostenloses Programm namens Expresso (http://www.ultrapico.com/expresso.htm), auf dem Sie C# regex testen können. – Neal

Antwort

2

Vielleicht können Sie diese verwenden:

\[\d+\/(?<DaysInMonth>\d+)\s(?<FirstTitle>[\w\s]+)\]\s(?<SecondTitle>[\w\s]+) 

für Anmerkung:

\1 => nicht die "1", da \1 Spiel das gleiche wie der letzte definierte Match Gruppe entkommen.

[ => ou haben zu entkommen diese \[ weil mit [ erstellen Sie eine Reihe von caracters

so Ihre regex:

[\1(?<DaysInMonth>\d\s+) (?<FirstTitle>[\w\s \]+)\] (?<SecondTitle>[\w\s \]+)$] 

sagt: i ein caracter aus diesem Satz von caracter übereinstimmen soll:

\1(?<DaysInMonth>\d\s+) (?<FirstTitle>[\w\s \]+)\] (?<SecondTitle>[\w\s \]+)$ 
+0

Hallo @ baddger964. Danke für deine Antwort, ich habe dein Regex-Muster ausprobiert, es scheint, dass etwas nicht stimmt. Hier ist der Link: [Link] (https://regex101.com/r/7YPiUQ/2) – Reinhardt

+0

versuchen Sie diese https://regex101.com/r/7YPiUQ/4 – baddger964

+0

diese Regex Arbeit an v4, aber nicht in v2 ich weiß nicht, warum – baddger964

0

Gefällt mir das? Hier ist ein Beispiel für eine normale Regex, wenn Sie interessiert sind.

https://regex101.com/r/wLBj7Z/1

+0

Hallo @ Lucas Carnevalli, sicher, es funktioniert, aber ich möchte mehrere Gruppen von Zeichen (Named Capture Groups) übereinstimmen. Wie ich es benutze, die genannten Capture-Gruppen von der Serverseite (asp.net C#). – Reinhardt