string str ="<div dsfsdf><img></div>fgh";
string str1=="<div dsfsdf er>gioip</div>fgh";
string str2=="<div dsfsdf retrt></div>fgh";字符串如上面写的有三种形式,
我现在想把在<div>之间没有内容的替换掉,
例如str2,替换后为str2 = "fgh";
其他两种还是按原来的输出
我现在写的正则表达式是
 @"(<div.*?></div>)"
这样str2是正确的,但是对str这种情况就不正确了,
替换后 str = "fgh" 我想要的结果是str不替换
str = ="<div dsfsdf><img></div>fgh";

解决方案 »

  1.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    string str ="<div dsfsdf><img></div>fgh";
            string str1="<div dsfsdf er>gioip</div>fgh";
            string str2="<div dsfsdf retrt></div>fgh"; Response.Write (this.FilterString(str)+"<br>");
    Response.Write (this.FilterString(str1)+"<br>");
    Response.Write (this.FilterString(str2)+"<br>");
    }private string FilterString(string str)
    {
    System.Text .RegularExpressions.Regex regx=new System.Text.RegularExpressions.Regex ("<div[^<>]+?></div>",System.Text.RegularExpressions .RegexOptions.IgnoreCase);
    return System.Web .HttpUtility.HtmlEncode(regx.Replace (str,""));}
      

  2.   

    @"(<div[^<>]*?></div>)"
      

  3.   

    public static string IsOKString11(string s)
    {
    s=@"<div dsfsdf er>qerqe</div>fgh";
    string pattern = @"<div[^<>]*?></div>";
    Regex reg = new Regex(pattern,RegexOptions.IgnoreCase);
    s = reg.Replace(s, "");
    return s;
    }
      

  4.   

    @"(\<div.*?\>\<\/div\>)"
    .*?就是表示非贪婪匹配,所以不用[^<>]怀疑是没打\转义。