簡體   English   中英

C#使用正則表達式獲取多個匹配項

[英]C# Using regex to get multiple matches

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();

目標是使versionNumberStatus.Text顯示為“ hello”,使usernameStatus.Text顯示為“ welcome”。

問題是usernameStatus.Text沒有顯示任何內容。 有任何想法嗎?

您在這里只有一個捕獲組,處於"2448(.*?)2448"模式,因此您無法訪問.Groups[2]

一個解決方案是使用2448拆分或使用2448(.*?)2448(.*?)2448模式。

參見regex演示

或此C#代碼:

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

一種解決方案是將Matches()與正則表達式一起使用,如下所示:

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM