有如下数据做为例子:“<p class="Mosnoral"><p style="XXXXXXXXXX"><p><p calss="Mosnoral_lr">”现在要求是去找到<p>标签 ,如果<p>标签里面有class属性就将全部<p>标签中的CLASS替换为class="Mosnral_lr_mc",如果没有就在<p>标签的<p 前面加一个class="Mosnral_lr_mc"    。跪求高手指教写法!

解决方案 »

  1.   


    string input = @"<p class=""Mosnoral""> <p style=""XXXXXXXXXX""> <p> <p class=""Mosnoral_lr"">";
    string output = Regex.Replace(input, @"(?isn)(?<g1><p((?!([<>]|class)).)*)(class="[^""]+"")?(?<g2>((?!([<>]|class)).)*>)", @"${g1} class=""Mosnral_lr_mc"" ${g2}");
      

  2.   


    --上个少了个双引号
    string input = @"<p class=""Mosnoral""> <p style=""XXXXXXXXXX""> <p> <p class=""Mosnoral_lr"">";
    string output = Regex.Replace(input, @"(?isn)(?<g1><p((?!([<>]|class)).)*)(class=""[^""]+"")?(?<g2>((?!([<>]|class)).)*>)", @"${g1} class=""Mosnral_lr_mc"" ${g2}");
      

  3.   


    // 这是结果
    <p  class="Mosnral_lr_mc"> <p style="XXXXXXXXXX" class="Mosnral_lr_mc"> <p class="Mosnral_lr_mc"> <p  class="Mosnral_lr_mc">