2017-02-16 4 views
1

Ich habe einen String-Wert:Apportieren Ziffern aus einem String mit einem bestimmten Muster

"Drop 1.0.2.34 - Compatible with core revision 123456" 

Und ich versuche, den Wert 1.0.2.34 mit den Vollbremsungen aus der Zeichenfolge zu erhalten. Ich benutze Regex, um es zu versuchen, aber es kommt mit einem "" -Wert zurück.

Ex.

Match match = Regex.Match(string, "([0-9]*[.][0-9]*)*"); 
if (match.Success) 
{ 
    string version = match.Captures[0].Value; 
} 

Ich denke, es ist etwas klein ist, dass ich fehle, weil es eine Übereinstimmung im String tut finden, aber es gibt keinen Wert hat. Kann mir bitte jemand helfen?

Antwort

4

Ihre Regex stimmt mit einer leeren Zeichenfolge überein, und da Sie nur nach 1 Übereinstimmung suchen, wird die leere Zeichenfolge vor dem ersten Zeichen zurückgegeben.

Verwenden

[0-9]+(?:\.[0-9]+)+ 

Siehe regex demo

Einzelheiten:

  • [0-9]+ - 1+ Ziffern
  • (?:\.[0-9]+)+ - 1+ Sequenzen:
    • \. - ein Punkt
    • [0-9]+ - 1+ Ziffern.

C#:

string version = string.Empty; 
Match match = Regex.Match(string, @"[0-9]+(?:\.[0-9]+)+"); 
if (match.Success) 
{ 
    version = match.Value; 
} 
+1

Thank you! Das funktioniert super und danke für die Erklärung und Details! – CareTaker22

Verwandte Themen