2009-08-10 61 views
0

我有原始HTML,我需要設置所有IMG src =「http:// foo」。用於設置IMG的RegEx src =「」

這是我到目前爲止的RegEx,它似乎工作。在我的環境中,假設標記是大寫字母而屬性是小寫字母是安全的。我在.Net中這樣做,但我認爲這個平臺並不重要。 \ s是.Net RegEx引擎中的任何空格。

有人可以改進它嗎?

Regex.Replace(htmlText, "(<IMG[^>]*\\ssrc=\")([^\"]*)(\"[^>]*>)", "$1http://foo$3") 

回答

1

不是regexpert以任何手段,但儘量txt2re.com

也許這將讓你開始:http://txt2re.com/index-ruby.php3?s=%3CIMG%20src=%22http://foo.bar/baz.jpg%22%20/%3E&1

+0

這是學習和使用正則表達式的絕佳技巧。感謝發佈。 – reporter 2011-09-05 14:36:58

+0

謝謝!很高興看到一個2歲的評論仍然有用。 – user94154 2011-09-05 16:18:09

+0

一個很好的學習新東西的教程永遠不會過期;-) – reporter 2011-09-06 08:20:14

0

也許允許多個空格與\s+

2

匹配整個IMG首先標記,然後匹配src="([^\"]*)"屬性,替換它,僅爲src =「...」部分提供替換字符串。

然後,您可以使用原始匹配,然後搜索整個標籤,並將其替換爲整個標籤。

+0

因此,對圖像標籤的搜索將是「<[Ii] [Mm] [Gg] [^>] *>」,您可以將src標籤捕獲爲小寫或不相似的方式。 – maxwellb 2009-08-10 19:23:46

0

另一種方法是使用HTML解析器。國際海事組織,你使用解析器比正則表達式更適合這項任務。

+0

+1。儘管我通常會完全同意這一點,但有時候,HTML解析器不起作用。在我的問題(舊的)中,使用HTML解析引擎的時間太長了,因爲我有很多HTML需要在短時間內完成。正則表達式方法明顯更快,但不太健壯。然而,這在OP中沒有指出。 – 2011-09-07 22:11:29

+0

我腦海中的時髦黑客聲音說在這種情況下使用併發/ MapReduce。或者就像一個正常的,理智的人一樣grep grep! – user94154 2011-09-08 02:17:18