我需要从很多html页面中删除一些标签。 最近我在Notepad ++中发现了正则表达式的选项
但是..即使经过数小时的谷歌搜索,我似乎也没有做对。 我需要什么?
示例:
<p class=MsoNormal style='margin-left:19.85pt;text-indent:-19.85pt'><spanlang=NL style='font-size:11.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'> </span></span><span lang=NL style='font-size:9.0pt;font-family:"Arial","sans-serif"'>zware uitvoering met doorzichtige vulruimte;</span></p>
我需要删除有关样式,类和id的所有内容。所以我只需要没有其他任何东西的干净标签。
任何人都可以帮我这个吗?
亲切的问候
EDIT 通过pastebin检查整个文件:http://pastebin.com/0tNwGUWP
答案 0 :(得分:3)
我认为这种模式会删除“p”和“span”标签中的所有样式:
((?<=<p)|(?<=<span))[^>]*(?=>)
=&GT;它是如何工作的:
( (?<=<p) | (?<=<span) )
:这是一个 LookBehind 块,以确保
我们正在寻找的字符串是<p
或 <span
[^>]*
:搜索任何不是>
字符的字符
(?=>)
:这是一个 LookAfter 块,以确保
我们要找的字符串在>
字符
PS:在Notepad ++上测试
答案 1 :(得分:0)
如果您提供的样本代表您需要处理的内容,那么以下快速而肮脏的解决方案将起作用:
Find what: [a-z]+='[^']*'
Replace with:
Find what: [a-z]+=[a-zA-Z]*
Replace with:
您必须首先运行第一个属性以获取style='...'
属性,然后您需要运行第二个属性来同时拾取class='...'
和lang='...'
。
有充分的理由说明其他人的海报说不要试图以这种方式解析HTML。因为正则表达式,你最终会遇到各种各样的麻烦,总的来说无法处理HTML的所有奇怪之处。
答案 2 :(得分:0)
我的建议如下。
正如我在示例文本中看到的那样,您只需要处理“p”和“span”标记。而你显然想要删除其中的所有样式。在这种情况下,您可以考虑删除这些标记内的所有内容,保持简单&lt; p&gt;或者&lt; span&gt;。
我不了解Notepad ++,但是一个简单的C#程序可以快速完成这项工作。
答案 3 :(得分:0)
假设<spanlang=NL
输错(应该是<span lang=NL
),我会这样做:
找到:(<\w+)[^>]*>
替换为:$1>
答案 4 :(得分:0)
如果您不介意进行一些编程:HTMLAgilityPack可以轻松地从您的xml / html中删除脚本/样式/观察者。
示例:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
doc.DocumentNode.Descendants()
.Where(n => n.Name == "script" || n.Name == "style")
.ToList()
.ForEach(n => n.Remove());