string name = "<span class=\"t1\" >可乘坐K1或者7路公交 </span>";
name = Regex.Replace(name, @"(?<=<.*?>)(.*)([KXBY]\d+)(.*)(\d+)(.*?)(?=<.*?>)", "$1<a href=\"search.aspx?kw=$2\">$2</a>$3<a href=\"search.aspx?kw=$4\">$4</a>$5", RegexOptions.IgnoreCase);
           

解决方案 »

  1.   


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Text.RegularExpressions;/******************************************************************************
     * 
     * 正则表达式演示程序
     * 作者:高宏伟(DukeJoe)
     * 地点:黑龙江省哈尔滨市
     * QQ:21807822
     * 
     * 时间:2008-8-1 12:05:47
     * 开发环境:Microsoft Visual Studio .NET 2005
     * 操作系统:Windows XP Home Edition Service Pack 2
     * 注释: 1、因为你的span 里有一个t1,可能会和7混淆,我也不太清楚你项目里具体的命名
     *        规则,所以我改动了一下t1,以免造成误解。
     *        2、如果你认为t1需要保留,那是不是7的后面一定有一个路字,这些地方不知道在项
     *        目中还有什么其它的规律,我没有随便乱猜你那边的情况。不过我看主要还是演示明
     *        白如何使用正则表达式比较好,会用了之后你也可以自已改动一下,使表达式更符合
     *        你的实际情况。祝好运
     * 
     *****************************************************************************/
    namespace test1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Regex rx = new Regex(@"(([KXBY]|[kxby])*(\d+))");            String strSample = "<span class=\"joe\">可乘坐K1或者7路公交 <span>";
                String strReplace = "<a href=\"search.aspx?kw=\"$1\">$1</a>";
                String strResult;            strResult = Regex.Replace(strSample, rx.ToString(), strReplace);
                Console.WriteLine("结果 = {0}", strResult);
            }
        }
    }