我需要編寫一個正則表達式來執行以下操作 取代
(A)
src ="/folder/image.jpg"
或
src="http://www.mydomain.com/folder/image.jpg"
與
src="/cache/getCacheItem.aspx?source_url=http://www.mydomain.com/folder/image.jpg"
(B)
href="/folder/file.zip"
或
href="http://www.mydomain.com/folder/file.zip"
與
href="/cache/getCaccheItem.aspx?source_url=http://www.mydomain.com/folder/file.zip
我知道我可以使用
(src|href).*?=['|\"](?<url>.*?)['|\"]
與
$1="/legacy_integration/cache/getCacheItem.aspx?source_url=$2"
一個替代值趕SRC = ...和HREF = ...屬性。不過,我需要根據文件擴展名來過濾 - 只匹配,如:JPG,PNG,GIF圖像有效擴展,並只匹配像拉鍊和pdf HREF擴展。
有什麼建議嗎?該問題可以概括爲:修改上述表達式以僅匹配某些文件擴展名,並且僅當原始URL爲相對時才允許插入域http://www.mydomain.com/,從而確保輸出文本僅包含一次域。
我需要執行此使用兩個不同的正則表達式,一個用於源文本,包括域名,一個沒有?或者,我可以採用某種使用條件匹配的語句,與替換式組合,將插入基於匹配的文本是否包含域的域或沒有?
我知道我可以使用自定義匹配評估器來執行此操作,但似乎在正則表達式本身內執行此操作可能會更快/更高效。
建議/評論?
[RegEx match open tags but XHTML self-contained tags]可能的重複(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – AeroX