正则表达式循环分组示例(转)

三角猫 DeltaCat的部落格看到一篇关于循环分组示例的文章,特转载于此:
今天,有个网友咨询一个正则表达式的使用,问题描述如下:
“@Beijing|北京|101@Shanghai|上海|102@Tianjin|天 津|103@Chongqing|重庆|104@Haerbin|哈尔滨|105@Dalian|大连|106”
分解成 “Beijing 北京 101“,”Shanghai 上海 102” 的单独项。
这个正则的使用,是循环分组的一个典型应用。
C#的写法:

string str = @”@Beijing|北京|101@Shanghai|上海|102@Tianjin|天津|103@Chongqing|重庆|104@Haerbin|哈尔滨|105@Dalian|大连|106″;
Regex reg = new Regex(@”@([^|]*)|([^|]*)|([^@]*)”);
foreach (Match m in reg.Matches(str))
{
Console.WriteLine(“{0} {1} {2}”, m.Groups[1].Value, m.Groups[2].Value, m.Groups[3].Value);
}