C#如何使用正则表达式分割(A:B = C)*?

maf*_*afu 1 c# regex lazy-evaluation

这应该是一个非常简单的问题,但我似乎无法找到正确的解决方案.格式中有一个字符串:

A:B=C;D:E=F;G:E=H;...
Run Code Online (Sandbox Code Playgroud)

而A,B和C是字母数字(并且可以更低,也可以是大写).A和B的长度为1+,C可以为空.

我想我必须使用类似的东西

((?<A>.+):(?<B>.+)=(?<C>.*);)*
Run Code Online (Sandbox Code Playgroud)

但我不知道如何以懒惰的方式使它匹配.我也不确定如何获得相应匹配的结果,所以我很感激一些代码示例.

如果你能给我一个提示,我会很高兴的.

Fre*_*örk 5

正则表达式是一个要求吗?由于字符串具有非常结构化的良好结构,因此很容易在没有正则表达式的情况下解析它:

string input = "A:B=C;D:EF=G;E:H=;I:JK=L";
string[] elements = input.Split(new[] { ';' });
List<string[]> parts = new List<string[]>();
foreach (string element in elements)
{
    parts.Add(element.Split(new[] { ':', '=' }));
}
// result output
foreach (string[] list in parts)
{
    Console.WriteLine("{0}:{1}={2}", list[0], list[1], list[2]);
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

A:B=C
D:EF=G
E:H=
I:JK=L
Run Code Online (Sandbox Code Playgroud)