假设有这么一段html如果您向专家提问,<a href="zhuanjia.htm">专家</a>在登录CSDN网站后将第一时间内得到通知,并且为您提供答案
链接
如果您是第一次提问,建议您阅读"提问的智慧" 或者直接使用<a href="csdn.htm">CSDN</a> 快速搜索
链接我想要替换 链接 两个字为超链接   链接点为链接两个字向上寻找最近的链接点   替换完成后成为这样
如果您向专家提问,<a href="zhuanjia.htm">专家</a>在登录CSDN网站后将第一时间内得到通知,并且为您提供答
<a href="zhuanjia.htm">链接</a>
如果您是第一次提问,建议您阅读"<a href="tiwen.htm">提问的智慧</a>" 或者直接使用<a href="csdn.htm">CSDN</a> 快速搜索
<a href="csdn.htm">链接</a>
不知能不能做到,如不用正则表达式给点思路也好

解决方案 »

  1.   

    叙述的有些错误,看这个吧
    假设有这么一段html 如果您向专家提问, <a href="zhuanjia.htm">专家 </a>在登录CSDN网站后将第一时间内得到通知,并且为您提供答案 
    链接 
    如果您是第一次提问,建议您阅读"<a href="tiwen.htm">提问的智慧 </a>" 或者直接使用 <a href="csdn.htm">CSDN </a> 快速搜索 
    链接 我想要替换 链接 两个字为超链接  链接点为链接两个字向上寻找最近的链接点  替换完成后成为这样 
    如果您向专家提问, <a href="zhuanjia.htm">专家 </a>在登录CSDN网站后将第一时间内得到通知,并且为您提供答 
    <a href="zhuanjia.htm">链接 </a> 
    如果您是第一次提问,建议您阅读" <a href="tiwen.htm">提问的智慧 </a>" 或者直接使用 <a href="csdn.htm">CSDN </a> 快速搜索 
    <a href="csdn.htm">链接 </a> 
    不知能不能做到,如不用正则表达式给点思路也好
      

  2.   

    1.找到匹配项
    <a href="(.*?)">(?:.*?)</a>(?:[\s\S]*?)(链接)2.替换
    1)替换匹配项:(.*?) 和(链接) 都在匹配组里,(链接) 替换为 <a href="(.*?)">(链接)</a>
    2)替换html:用替换后的匹配项 替换 原匹配项
      

  3.   

    这个我测了,没什么问题:
    textBox2.Text = Regex.Replace(textBox1.Text, @"(?<=(?<herf><a\s*href=[^>]*>)[^<]*</a>[^<]*)链接", delegate(Match m) { return m.Groups["herf"].Value + "链接" + "</a>"; },RegexOptions.IgnoreCase);
    其中textBox1.Text就是你的那段html代码。
      

  4.   

    string test = @"如果您向专家提问,<a href=""zhuanjia.htm"">专家</a>在登录CSDN网站后将第一时间内得到通知,并且为您提供答案
    链接
    如果您是第一次提问,建议您阅读"" <a href=""tiwen.htm"">提问的智慧</a>"" 或者直接使用<a href=""csdn.htm"">CSDN </a> 快速搜索
    链接 ";
    string result = Regex.Replace(test, @"(<a[^>]*?href=([""']?)(?<url>[^""'\s]*)\2[^>]*>[\s\S]*?)链接", @"$1<a href=""${url}"">链接</a>", RegexOptions.IgnoreCase);
    MessageBox.Show(result);
      

  5.   

    感谢2楼 3楼 5楼~~~   尤其是3楼  这么快而且准确呀  谢谢^_^   我还以为实现不了呢   没想到这么强大.......root_你来了   上次给错分了    还欠你很多分   明天我加分一次   还给你~~~
    不过你的答案不知为啥有点错误,不过还是感谢多次帮我,每当学习一点正则表达式,才发现还有更高深的用法,高手呀,佩服佩服,这个本来想用字符串处理,可是每处理一次,字符串长度就变了,很烦人如果您向专家提问, <a href="zhuanjia.htm">专家 </a>在登录CSDN网站后将第一时间内得到通知,并且为您提供答案 
    <a href="zhuanjia.htm">链接</a> 
    如果您是第一次提问,建议您阅读" <a href="tiwen.htm">提问的智慧 </a>" 或者直接使用 <a href="csdn.htm">CSDN </a> 快速搜索 
    <a href="tiwen.htm">链接</a> 第二个链接字样链错了
      

  6.   

    哈哈,想着抢分没仔细看,少了一个判断string test = @"如果您向专家提问,<a href=""zhuanjia.htm"">专家</a>在登录CSDN网站后将第一时间内得到通知,并且为您提供答案
    链接
    如果您是第一次提问,建议您阅读"" <a href=""tiwen.htm"">提问的智慧</a>"" 或者直接使用<a href=""csdn.htm"">CSDN </a> 快速搜索
    链接 ";
    string result = Regex.Replace(test, @"(<a[^>]*?href=([""']?)(?<url>[^""'\s]*)\2[^>]*>(?:(?!<a\s)[\s\S])*?)链接", @"$1<a href=""${url}"">链接</a>", RegexOptions.IgnoreCase);
    //MessageBox.Show(result);歌丸的正则适用场合有限制,中间不能有<font...>之类的html代码,如果沿用委托的话,倒是可以用我的正则取出来,再在委托里做下判断
      

  7.   

    假如链接二字出现只出现2次,且为单独一行,使用以下正则假如strHtml是你的html源码
    连续执行2句
    strHtml=regex.replace(strHtml,"^链接$","<a href="zhuanjia.htm">链接 </a>",RegexOptions.Multiline);
    strHtml=regex.replace(strHtml,"^链接$","<a href="csdn.htm">链接 </a> ",RegexOptions.Multiline);