[英]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.