繁体   English   中英

C#正则表达式替换

[英]c# regex replace

我有一个数据库,其中包含带有html内容的Page对象。 数据库中的很多行都包含此内容

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

所以我创建了一个超级简单的正则表达式替换:

 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();

当我在正则表达式测试工具中运行正则表达式时,它可以正常工作。 但是在C#代码中却没有。 谁能帮帮我。

如果有人知道如何使用sql中的正则表达式替换进行更新,那将是很好的选择。

正则表达式不是我的强项(虽然很遗憾)。 但这是我尽快学到的东西;)

您的问题是“ / ms”。 您正在尝试指定几个regex标志,但是C#指定的标志与php / perl不同(您的regex测试人员可能测试针对那些语言的regexe 。我建议Expresso (免费)以用于.NET regexe)。 将您的模式更改为此:

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

(还要注意,我添加了“ height”属性以使其匹配-仅仅是错字?)

而您的正则表达式实例化为:

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

它应该工作。

[编辑]哦,并修复了replace方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM