2016-10-14 2 views
1

I Zeichenfolge im folgenden Format haben:Aufteilung einer Zeichenfolge mit Regex

string test = "test.BO.ID"; 

Mein Ziel String ist, dass ein Teil des Strings, was nach dem ersten Punkt. Also idealerweise erwarte ich Ausgabe als "BO.ID". Hier

ist, was ich versucht habe:

// Checking for the first occurence and take whatever comes after dot 
var output = Regex.Match(test, @"^(?=.).*?"); 

Der Ausgang Ich bin immer leer.

Was ist die Änderung, die ich für Regex machen muss?

Antwort

4

Sie erhalten eine leere Ausgabe, da das Muster, das Sie haben, eine leere Zeichenfolge am Anfang einer Zeichenfolge abgleichen kann.

Verwendung (der Wert wird in Match.Groups[1].Value sein)

\.(.*) 

oder

(?<=\.).* 

Siehe regex demo und C# online demo (mit einem Look-Ahead, die Zeichenfolge als Match.Value zu bekommen).

kann ein nicht-regex Ansatz Verwendung String#Split mit count Argumente (demo) sein:

var s = "test.BO.ID"; 
var res = s.Split(new[] {"."}, 2, StringSplitOptions.None); 
if (res.GetLength(0) > 1) 
    Console.WriteLine(res[1]); 
+0

FYI, die C# -Demo ist verfügbar unter http://ideone.com/9vmaoo –

3

Wenn Sie nur den Teil nach dem ersten Punkt wollen, müssen Sie nicht über einen regulären Ausdruck überhaupt:

Verwandte Themen