c#使用正则表达式获得多个匹配
本文关键字:正则表达式 | 更新日期: 2023-09-27 18:01:38
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();