2014-02-21 220 views
1

我需要從大量的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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=NL style='font-size:9.0pt;font-family:"Arial","sans-serif"'>zware uitvoering met doorzichtige vulruimte;</span></p> 

我需要刪除有關的造型,類和id的一切。所以我只需要有乾淨的標籤沒有別的。

任何人都可以幫助我在這一個?

親切的問候

編輯 通過引擎收錄檢查整個文件:http://pastebin.com/0tNwGUWP

+1

不要使用正則表達式來解析HTML:http://stackoverflow.com/a/1732454/2812842 –

+0

'更正:'不要使用正則表達式來當嵌套在自己內部的標籤涉及到時解析HTML –

+2

你有'

回答

0

如果您提供的樣本是代表你需要處理的,那麼,下面的快速和骯髒的解決方案將工作:

Find what: [a-z]+='[^']*' 
Replace with: 

Find what: [a-z]+=[a-zA-Z]* 
Replace with: 

您必須首先運行第一個來獲取style='...'屬性,然後您需要運行第二個來拾取class='...'lang='...'

其他海報人士說,不要試圖用這種方式解析HTML。從正則表達式開始,你會遇到各種各樣的麻煩,一般來說不能處理所有奇妙的HTML。

0

我的建議如下。

正如我在您的示例文本中看到的,您只有需要處理的「p」和「span」標籤。你顯然想要刪除它們中的所有樣式。在這種情況下,您可以考慮刪除這些標籤中的所有內容,並將其保留爲簡單< p>或< span>。

我不知道Notepad ++,但一個簡單的C#程序可以快速完成這項工作。

0

假設<spanlang=NL一個錯字(應該是<span lang=NL),我會做:

查找內容:(<\w+)[^>]*>
替換爲:$1>

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

我認爲這種模式將刪除所有樣式中的 「P」 和 「跨度」 標籤:

((?<=<p)|(?<=<span))[^>]*(?=>)

=>它是如何工作:

  • ((?<=<p) | (?<=<span)):This is a LookBehind座以確保 我們正在尋找的字符串來後<pOR<span

  • [^>]*:搜索不是>字符

  • (?=>)任何字符:這是一個LookAfter塊以確保我們正在尋找的
    字符串在>之前有字符

PS:測試在記事本++