C#正则表达式操作中使用LINQ

问题场景

在博客园闪存内容中提取Tag,Tag要放在中括号之间并且出现在闪存内容的开头。

比如:[程序员][代码]博客园 - 程序员的网上家园,代码改变世界

提取出来的Tag应该是:[程序员]、[代码]

正则表达式

Regex _regexTag = new Regex(@"^(\[[^\]]+\])+", RegexOptions.Compiled);

通过LINQ从正则表达式的捕获中提取出Tag

public IList<string> GetTags(string ingContent)
{
return (from Capture c in _regexTag.Match(ingContent).Groups[1].Captures
select c.Value).ToList();
}

注:即使没有捕获到,_regexTag.Match(ingContent).Groups[1].Captures也不会引发异常。

LINQ使用感言

LINQ就像代码世界的小天使,给程序员带来了更多的轻松与快乐!

posted @ 2012-01-06 13:34 dudu 阅读(540) 评论(3) 编辑 收藏

 回复 引用 查看   
#1楼 2012-01-06 14:38 Mr.漫步者      
俺还没有使用都爱linq呢 郁闷 公司还是用过的2005
 回复 引用 查看   
#2楼 2012-01-06 16:31 Lionheart Zhang      
return _regexTag.Match(ingContent).Groups[1].Captures.Cast<Capture>().Select(c => c.Value).ToList();

用System.Linq的扩展方法更直观

 回复 引用 查看   
#3楼[楼主] 2012-01-06 22:14 dudu      
@Lionheart Zhang
嗯,这个方法更简洁