我需要对一些字符串进行替换,但是有个要求是<>里面标签的内容不能进行替换
如:gggggg:# 中的:#替换成一个符号,但是在<span color:#fff>中的:#不做替换
如何处理?

解决方案 »

  1.   

    将#换成*的例子:string Html="12#45<88#99>12#45<88#99>12#45<88#99>";
    Html = Regex.Replace(Html, @"(?<!<[^<>]*)#(?![^<>]*>)", "*");
      

  2.   

    正常的用Replace带html的标签的不替换。正则不会 悲剧。。
      

  3.   

                string str = "gggggg:# <span style=\"color:#FF0000\">abcdefg</span>aa:#fdsas";
                string result = Regex.Replace(str, @"(?<=^|>)[^<>]+(?=<|$)", delegate(Match m)
                {
                    return Regex.Replace(m.Value, ":#", "CSDN");
                });
                Response.Write(result);
    //ggggggCSDN <span style="color:#FF0000">abcdefg</span>aaCSDNfdsas
      

  4.   

    LS的思路的确很给力string str = "gggggg:# <span style=\"color:#FF0000\">abcdefg</span>aa:#fdsas";
    str = new Regex(@"(?<!<[^>]+):#|:#(?![^<]+>)").Replace(str, 
          m => m.Value.Replace(":#", "CSDN")
    );
    Response.Write(str);
      

  5.   


    string str = "gggggg:# <span style=\"color:#FF0000\">abcdefg</span>aa:#fdsas";
    str = new Regex(@"(?<!<[^>]+):#(?![^<]+>)").Replace(str, 
          m => m.Value.Replace(":#", "CSDN")
    );
    Response.Write(str);
      

  6.   


    Regex.Replace(input, "(?<!<[^<>]*):#", "CSDN");