2016-08-09 13 views
1
var userVersionHTML = "2448hello2448welcome2448"; 
Regex regex = new Regex("2448(.*?)2448"); 
var v = regex.Match(userVersionHTML); 
versionNumberStatus.Text = v.Groups[1].ToString(); 
usernameStatus.Text = v.Groups[2].ToString(); 

Das Ziel ist, zu erhalten versionNumberStatus.Text anzuzeigen ‚Hallo‘ und für usernameStatus.Text anzuzeigen ‚Willkommen‘ zu bekommen.C# regex auf mehrere Übereinstimmungen

Das Problem ist, dass nichts für die usernameStatus.Text erscheint. Irgendwelche Ideen?

+1

Sie haben nur 1 Erfassungsgruppe hier in '" 2448 2448 (*.?) "Muster so, dass Sie nicht auf' .Groups [2] 'zugreifen können. Split mit '2448'. Oder verwenden Sie das 2448 (. *?) 2448 (. *?) 2448-Muster. –

+0

@ WiktorStribiżew Du bist der beste – Dgameman1

+0

Ich schrieb eine Antwort, bitte überprüfen. –

Antwort

2

Sie haben nur eine Erfassungsgruppe hier in "2448(.*?)2448" Muster, so dass Sie nicht .Groups[2] zugreifen können.

Eine Lösung ist entweder mit 2448 teilen oder verwenden Sie die 2448(.*?)2448(.*?)2448 Muster.

Siehe regex demo.

Oder diese C# code:

var userVersionHTML = "2448hello2448welcome2448"; 
var chunks = userVersionHTML.Split(new[] {"2448"}, StringSplitOptions.RemoveEmptyEntries); 
var versionNumberStatus = chunks[0]; 
var usernameStatus = chunks[1]; 
0

Eine Lösung ist Matches() mit einer Regex wie folgt zu verwenden:

var userVersionHTML = "2448hello2448welcome2448"; 

Regex regex = new Regex("(2448)?(.*?)2448"); 
var v = regex.Matches(userVersionHTML); 

versionNumberStatus.Text = v[0].Groups[2].ToString(); 
usernameStatus.Text = v[1].Groups[2].ToString(); 
Verwandte Themen