代码之家  ›  专栏  ›  技术社区  ›  Nealv

c#正则表达式替换

  •  1
  • Nealv  · 技术社区  · 15 年前

    我有一个包含html内容的页面对象的数据库。数据库中的许多行都包含此内容

      <p style="float: left; margin-right: 20px; height: 300px;">
            <img src="...">More html ...
     </p>
    

    所以我创建了一个超级简单的regex替换:

     foreach (var page in db.Pages)
                    {
                        string pattern = @"<p style=""float: left; margin-right: 20px;"">(.*)</p>/ms";
                        if( Regex.Match(page.Content, pattern).Success)
                        {
                            page.Content = Regex.Replace(page.Content, pattern, "<div class=\"contentimage\" >$1</div>");
                        }
                    }
    //                db.SubmitChanges();
    

    正则表达式不是我的强项(尽管很遗憾)。但这是我的清单上的事情要学习尽快;)

    1 回复  |  直到 15 年前
        1
  •  3
  •   NickAldwin    15 年前

    你的问题是“/ms”。您试图指定几个regex标志,但是C#指定的标志与php/perl不同(您的regex测试仪可能测试针对这些语言的regex)。我建议 Expresso

    string pattern = @"<p style=""float: left; margin-right: 20px; height: 300px;"">(.*)</p>";
    

    你的正则表达式实例化如下:

    if( Regex.Match(page.Content, pattern,RegexOptions.Multiline | RegexOptions.Singleline).Success)
    

    [编辑] 哦,修复替换方法:

    page.Content = Regex.Replace(page.Content, pattern, "<div class=\"contentimage\" >$1</div>", RegexOptions.Multiline | RegexOptions.Singleline);