我想把如下的文本
aaaaaaaaaaaaaaaa<a href="aa.html">请</a>bbbbbbbbbbb<a href='bb.htm'>教</a>cccccccccccc<a href='ccc.html'>一</a>dddddddddddddd<a href="ddd.htm" class='news'>下</a>代替成为aaaaaaaaaaaaaaaa请(aa.html)bbbbbbbbbbb教(bb.htm)cccccccccccc一(ccc.html)dddddddddddddd下(ddd.htm)能否将完整代码写出来~~
不胜感激~~~

解决方案 »

  1.   

    using System;
    using System.Collections;
    using System.Text.RegularExpressions;public class MyClass
    {
    public static void Main()
    {
    String text = "aaaaaaaaaaaaaaaa<a href=\"aa.html\">请</a>bbbbbbbbbbb<a href='bb.htm'>教</a>cccccccccccc<a href='ccc.html'>一</a>dddddddddddddd<a href=\"ddd.htm\" class='news'>下</a>";
    //text = "aaaaaaaaaaaaaaaa<a href=\"aa.html\">请</a>aaaaaaaaaaaaaaaa<a href=\"aa.html\">请</a>";
    String pattern = "([^(<a)]*<a\\s+href\\s*=\\s*[\\\"']{0,1}[^\\\"']*[\\\"']{0,1}[^>]*>[^(</a>)]*</a>)";

    Regex r = new Regex(pattern, RegexOptions.IgnoreCase);

    Console.WriteLine("-------------- RESULT -------------");
    MatchEvaluator myEvaluator = new MatchEvaluator(MyClass.GetReplaceResult);

    Console.WriteLine("原字符串:");
    Console.WriteLine(text);

    text = r.Replace(text,myEvaluator);
    Console.WriteLine("替换后的字符串:");
    Console.WriteLine(text);

    Console.ReadLine();
    }

    public static string GetReplaceResult(Match m)
        {
    Console.WriteLine(m.Value);
            return Regex.Replace(m.Value, "(?<1>([^(<a)]*))<a\\s+href\\s*=\\s*[\\\"']*(?<2>([^\\\"']*))[\\\"']*\\s*.*>(?<3>(.*))</a>", "${1}${3}(${2})");
        }

    }