日期:2014-05-18  浏览次数:20759 次

请教正则表达式,匹配链接文本
HTML code


<div class="text"> 2012-02-10 00:18:35&nbsp;&nbsp;作者:<a href="/member/member.php?username=M-Monroe" class="member_url">琴声水韵</a>&nbsp;&nbsp;来源:<a href="" target="_blank">新浪网</a>&nbsp;&nbsp;浏览次数:<span id="hits">628</span>&nbsp;&nbsp;文字大小:【<a href="javascript:fontZoom(16)">大</a>】【<a href="javascript:fontZoom(14)">中</a>】【<a href="javascript:fontZoom(12)">小</a>】 </div>



匹配结果是:时间 :2012-02-10 00:18:35 作者:琴声水韵 来源:新浪网

------解决方案--------------------
这不应该是正则表达式的问题
既然想把数据取出来,存储的时候就应该存成好获取的,每个数据分别存在一个标签了,带上id或clsaa属性
------解决方案--------------------
C# code
            string str = @"<div class=""text""> 2012-02-10 00:18:35&nbsp;&nbsp;作者:<a href=""/member/member.php?username=M-Monroe"" class=""member_url"">
琴声水韵</a>&nbsp;&nbsp;来源:<a href="""" target=""_blank"">新浪网</a>&nbsp;&nbsp;浏览次数:<span id=""hits"">628</span>&nbsp;&nbsp;
文字大小:【<a href=""javascript:fontZoom(16)"">大</a>】【<a href=""javascript:fontZoom(14)"">中</a>】【<a href=""javascript:fontZoom(12)"">小</a>】 </div>";
            Regex reg = new Regex(@"(?is)<div\s*class=""text"">(.*?)(?:(?:&nbsp;){2}([^<>]+)<a[^>]*?>\s*(.*?)</a>){2}");
            Match m = reg.Match(str);
            Console.WriteLine(m.Groups[1].Value);
            for (int i = 0; i < m.Groups[2].Captures.Count; i++)
            {
                Console.WriteLine(m.Groups[2].Captures[i].Value);
                Console.WriteLine(m.Groups[3].Captures[i].Value);
            }
/*
 2012-02-10 00:18:35
作者:
琴声水韵
来源:
新浪网
*/

------解决方案--------------------
{2}匹配两次
(?:&nsbp;)不捕获这个组