正则表达式解析问题

Ush*_*haP 1 c# regex parsing

我需要解析下面的字符串,并希望使用正则表达式,但可以找到正确的方法来做到这一点.

输入样本(令牌分隔符在;和令牌内部是任何字符,即M/W/D)

1W4;2W35;4M35;13W108
Run Code Online (Sandbox Code Playgroud)

预期产出

List<string> points = new List<string>() {"1W", "2W", "4M", "13W"};
List<int> intervals = new List<int>() {4, 35, 35, 108};
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Ale*_*lex 7

您可以通过使用string.Split然后使用正则表达式解析每个标记来将标记分割为标记:

var exp = new Regex(@"^(?<point>\d+[a-zA-Z])(?<interval>\d+)$");
var str = "1W4;2W35;4M35;13W108";
var tokens = str.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries);
foreach (var token in tokens)
{
    var match = exp.Match(token);
    if (match != null)
    {
        points.Add(match.Groups["point"].Value);
        intervals.Add(int.Parse(match.Groups["interval"].Value));
    }
}
Run Code Online (Sandbox Code Playgroud)