2009-11-16 83 views
0

我试图删除从文本文件的对象标签:从我的HTML删除对象标记

<object classid=""clsid:F08DF954-8592-11D1-B16A-00C0F0283628"" id=""Slider1"" width=""100"" height=""50""> 
    <param name=""BorderStyle"" value=""1"" /> 
    <param name=""MousePointer"" value=""0"" /> 
    <param name=""Enabled"" value=""1"" /> 
    <param name=""Min"" value=""0"" /> 
    <param name=""Max"" value=""10"" /> 
</object> 

我的正则表达式到目前为止是:

HMTL = Regex.Replace(HTML,@ “] >(?:。?)?”,“”,RegexOptions.IgnoreCase);

内部参数标签不会被删除。

+0

你可以使用DOM ... – 2009-11-16 03:46:45

回答

0

如果我理解你的要求,这将做到这一点:

$line =~ s/<object.*?>.*?<\/object>//is; 

这是Perl的,所以潜在的怪癖:

  • 表示非贪婪匹配,即它应该匹配模式的第一个可能的终结,而不是过去的
  • /我不区分大小写
  • /秒说治疗全文为单线(要能跨行匹配)
1

你应该能够指定<object>标签为您表达的一部分,并匹配一切到t他</object>标记。

Regex.Replace(html, @"<object.*?</object>", "", RegexOptions.Singleline); 
0

这个表达式可能会为你工作(它是饿极了贪婪):

<object.+</object> 

但我会建议使用HtmlAgilityPack代替。
它提供了使用HTML的DOM的能力。
所以,你会使用它就像使用XmlDocument的:

HtmlDocument doc = new HtmlDocument(); 
doc.Load("file.htm"); 
foreach(HtmlNode obj in doc.DocumentElement.SelectNodes("object") { 
    obj.Parent.RemoveChild(obj); 
} 
doc.Save("file.htm");