将其拆分为数组

m0d*_*st0 2 c# string

我有这个代理地址字符串,它们用空格分隔,但是x400和x500将空格处理到它们的地址中.什么是拆分它的最佳方法.

例如

smtp:john@a-mygot.com smtp:john@b-mygot.com smtp:john@c-mygot.com X400:C=us;A= ;P=mygot;O=Exchange;S=John;G=Gleen; SMTP:john@mygot.com 
Run Code Online (Sandbox Code Playgroud)

预期结果:

smtp:john@a-mygot.com
smtp:john@b-mygot.com
smtp:john@c-mygot.com
X400:C=us;A= ;P=mygot;O=Exchange;S=John;G=Gleen;
SMTP:john@mygot.com
Run Code Online (Sandbox Code Playgroud)

谢谢,

编辑,

        string mylist = "smtp:john@a-mygot.com smtp:john@b-mygot.com smtp:john@c-mygot.com X400:C=us;A= ;P=mygot;O=Exchange;S=John;G=Gleen; SMTP:john@mygot.com X500:/o=Example/ou=USA/cn=Recipients of  /cn=juser smtp:myaddress";

        string[] results = Regex.Split(mylist, @" +(?=\w+:)");
        foreach (string part in results)
        {
            Console.WriteLine(part);
        }
Run Code Online (Sandbox Code Playgroud)

结果

smtp:john@a-mygot.com
smtp:john@b-mygot.com
smtp:john@c-mygot.com
X400:C=us;A= ;P=mygot;O=Exchange;S=John;G=Gleen;
SMTP:john@mygot.com
X500:/o=Example/ou=USA/cn=Recipients of  /cn=juser
smtp:myaddress
Run Code Online (Sandbox Code Playgroud)

Yot*_*aXP 5

这是一个应该与协议之前的空格匹配的正则表达式.尝试将其插入Regex.Split如下:

string[] results = Regex.Split(input, @" +(?=\w+:)");
Run Code Online (Sandbox Code Playgroud)