2009-03-04 119 views
1

我需要從一組HTML文件中找到某個塊並將它們全部刪除。這些文件真的被黑了HTML,所以我不想用HtmlAgility包解析它,我想用一個簡單的正則表達式。在html中匹配一個正則表達式,忽略空格和引號

HTML的部分將總是看起來像這樣:

<CENTER>some constant text <img src=image.jpg> more constant text: 
variable section of text</CENTER> 

上述所有可以是上,下殼體的任意組合,並且發現它是IMG SRC = image.jpg的和不IMG SRC =「image.jpg」...並且在常數字符之間可以有任意數量的空白字符。

這裏有一些例子:

<CENTER>This page has been visited 
<IMG SRC=http://place.com/image.gif ALT="alt text">times since 10th July 2007 
</CENTER> 

<center>This page has been visited 
<IMG src="http://place.com/image.gif" Alt="Alt Text"> 
times since 1st October 2005</center> 

你認爲將與此模式匹配的好方法?

回答

2

需要多少文本來唯一標識目標?我會嘗試這第一個:

@"(?is)<center>\s*This\s+page\s+has\s+been\s+visited.*?</center>" 
+0

你看了我的腦海:)謝謝。 – 2009-03-04 01:36:16

1

這真的取決於如何簡單,你可以使正則表達式和匹配所需的元素。

<center>[^<]+<img[^>]+>[^>]+</center> 

也使用不區分大小寫的標誌(我不知道C#使用什麼)。如果您需要更多開發的東西,因爲您會遇到img標籤位於中心標籤內且不匹配的情況,那麼您可以像其他答案一樣開始硬編碼短語。

0

在C#中,您可以簡單地使用它,假設originalHTML包含您的整個HTML文件。

string result = null; 
result = Regex.Replace(originalHtml, 
         @"(\s*<center>[^<]*<img src=[^""].*?>.*?</center>\s*)", 
         "", 
         RegexOptions.Singleline | RegexOptions.IgnoreCase); 

正則表達式將刪除原始HTML中任何出現的模式並返回修改後的版本。

0

我應該測試RegExBuddy(不是免費的,但價格低),因爲這個工具節省了我很多時間。

希望這會有所幫助。

相關問題