2010年12月14日星期二

循环分组匹配的正则表达式例子

今天,有个网友咨询一个正则表达式的使用,问题描述如下:

"@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);
}

 

Javascript的写法:

<script type="text/javascript">
var str = "@Beijing|北京|101@Shanghai|上海|102@Tianjin|天津|103@Chongqing|重庆|104@Haerbin|哈尔滨|105@Dalian|大连|106";
var pattern = /\@([^|]*)\|([^|]*)\|([^@]*)/g;
var mts;
while (mts = pattern.exec(str))
{
if (mts != null)
{
alert(mts[1]);
alert(mts[2]);
alert(mts[3]);
}
}
</script>

没有评论:

发表评论