2012-03-28 5 views
0

Ich habe den folgenden Inhalt (zwei Felder mit Trennzeichen):Regex: Extrahiere eine einzelne benannte Übereinstimmung aus zwei Werten, die durch dazwischenliegende Zeichen getrennt sind?

~12.8~oz~ 

Ich brauche einen einzigen Namen Spiel haben, die das Paar minus ~ (in ASP.NET C#) gilt:

~(?<size>\d+\.\d*~[^~]*)~ 

Dies entspricht natürlich 12.8 ~ oz statt 12.8 oz. Und ja, ich würde gerne das ~ mit einem Leerzeichen ersetzen.

Irgendwelche Vorschläge?

+5

uh .. warum nicht ersetzen Sie die ~ mit einem Leerzeichen dann? – Aprillion

+2

Sie erkennen, dass '\ d +' nicht wirklich '12.8' entspricht? – ruakh

+0

Wenn Sie * eine * Übereinstimmung ohne die Tilde darin wollen, ist das nicht möglich. Es ist jedoch sehr einfach, mit einer anderen Codezeile zu entfernen. – Kobi

Antwort

0

Sprechen Sie über das Ersetzen der Zeichenfolge?

string resultString = null; 
try { 
    resultString = Regex.Replace(subjectString, @"~(\d+\.\d*)~([^~]*)~", @"\1 \2"); 
} catch (ArgumentException ex) { 
    // 
} 

Oder in der Regex gerade oben, der Gruppe 1, Raum, dann Gruppe 2 verketten?

Verwandte Themen