2013-11-28 27 views
1

刪除所有的表我在這個HTML文本的模式:記事本++的正則表達式:從HTML文本

<html> 
<body> 

<font> .... (some data) 
</font> 
... (some data) 

<table class="list" border=1 cellspacing=0 cellpadding=1 rules=groups borderColor=black > 
... (table data) 
</table> 

<font> .... (some data) 
</font> 
... (some data) 

<table class="list" border=1 cellspacing=0 cellpadding=1 rules=groups borderColor=black > 
... (table data) 
</table> 

<font> .... (some data) 
</font> 
... (some data) 

<table class="list" border=1 cellspacing=0 cellpadding=1 rules=groups borderColor=black > 
... (table data) 
</table> 

... 

(and the pattern is repeated) 

</body> 
</html> 

我想刪除所有表(及其內容),剩下的。我試着用這樣的:

正則表達式:

(.*)(<table class="list" border=1 cellspacing=0 cellpadding=1 rules=groups borderColor=black >)(.*)(</table>)(.*) 

更換

\1\5 

但沒有任何反應......我該如何解決呢?

+0

你不應該匹配前後的所有內容 - 只需匹配表格並將其替換爲空字符串即可。不需要捕獲 – Bergi

回答

3

轉到Search>Replace菜單(快捷鍵CTRL + ^h)並執行以下操作:

  1. 查找內容:

    <table.+?<\/table> 
    
  2. 替換:

    leave empty! 
    
  3. 選擇單選按鈕「正則表達式」並選中「。匹配換行」。

  4. 然後按Replace All

請注意,這僅僅是一個快速骯髒的解決方案。一般來說,你不應該用正則表達式解析/編輯XML文件。

您可以在regex101你的榜樣測試。

+0

感謝您的幫助! – csotelo

1

通常你不應該使用正則表達式來操縱HTML,但是在這種有限的情況下,你可以。我不能擔保記事本+ +這個工作,因爲我不使用它,但正則表達式是標準的。

假設:沒有嵌套表,多行模式,不情願的量詞。

<table[^>]*>.*?</table> 

關鍵部分是.*?*?*的不願意(非貪婪)版本,這意味着它儘可能少匹配;在這種情況下,這將是表格的全部內容。

1

使用正則表達式與空字符串替換<table[\s\S]+?<\/table>所有的發現。