正則表示式提取HTML中IMG標籤的SRC地址
一般來說一個 HTML 文件有很多標籤,比如“<html>”、“<body>”、“<table>”等,想把文件中的 img 標籤提取出來並不是一件容易的事。由於 img 標籤樣式變化多端,使提取的時候用程式尋找並不容易。於是想要尋找它們就必須寫一個非常健全的正則表示式,不然有可能會找得不全,或者找出來的不是正確的 img 標籤。
我們可以從 HTML 標籤的格式去想應該怎麼建這個正則表示式。首先要想一下 img 標籤有幾種寫法,忽略大小寫不看的話,下面列出 img 標籤可能出現的幾種情況。
<img> <img/> <img src=/>
這一些標籤不用考慮,因為沒有圖片資源地址。
<img src = /images/pic.jpg/ > <img src =" /images/pic.jpg" > <img src= '/images/pic.jpg ' / >
這一些標籤都有圖片資源地址,另外還有一個特點就是有引號對,可能為單引號,也可能為雙引號。因為不需要同時匹配引號對,所以正則表示式可以這麼寫:@"<img\s*src\s*=\s*[""']?\s*(?[^\s""'<>]*)\s*/?\s*>"
<img width="320" height="240" src=/images/pic.jpg onclick="window.open('/images/pic.jpg')">
因為 img 和 src 之間可能會有其他的引數,所以“<img”要有個單詞結束,比如說不能是“<imgabc”,同樣 src 前面也是一樣,使用單詞結束符“\b”有一個好處就是省去了表示空格的“\s*”。另外由於 img 標籤中不可以出現“<”、“>”這樣的符號,所以要改寫前面的正則表示式:@"<img\b[^<>]*?\bsrc\s*=\s*[""']?\s*(?<imgUrl>[^\s""'<>]*)[^<>]*?/?\s*>"
<img width="320" height="240" src = "
/images/pic.jpg" />
像這種可能會用回車符折行的問題有時候會出現,所以在有空格分開的地方要包含回車換行和 TAB 字元,另外在圖片地址中不能出現空格、TAB、回車和換行字元。
所以上面的正則表示式可以改成:@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>
下面寫出取得HTML中所有圖片地址的靜態方法。
01./// <summary> 02./// 取得HTML中所有圖片的 URL。 03./// </summary> 04./// <param name="sHtmlText">HTML程式碼</param> 05./// <returns>圖片的URL列表</returns> 06.public static string[] GetHtmlImageUrlList(string sHtmlText) 07.{ 08. // 定義正則表示式用來匹配 img 標籤 09. Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase); 10. 11. // 搜尋匹配的字串 12. MatchCollection matches = regImg.Matches(sHtmlText); 13. int i = 0; 14. string[] sUrlList = new string[matches.Count]; 15. 16. // 取得匹配項列表 17. foreach (Match match in matches) 18. sUrlList[i++] = match.Groups["imgUrl"].Value; 19. return sUrlList; 20.}
相關推薦
C#正則表示式提取HTML中IMG標籤的SRC地址
原文:http://blog.csdn.net/smeller/article/details/7108502 一般來說一個 HTML 文件有很多標籤,比如“<html>”、“<body>”、“<table>”等,想把文件中的 img 標籤提取出來並不
正則表示式提取HTML中IMG標籤的SRC地址
一般來說一個 HTML 文件有很多標籤,比如“<html>”、“<body>”、“<table>”等,想把文件中的 img 標籤提取出來並不是一件容易的事。由於 img 標籤樣式變化多端,使提取的時候用程式尋找並不容易。於是想要尋找它們就
java正則表示式去除html中所有的標籤和特殊HTML字元
關於java正則表示式去除html中所有的標籤和特殊HTML字元,結合我所做的專案總結的經驗: 總共分為三種:第一種適用於適用短的文章,將文章用正則表示式的方式拼接到程式碼中,有些繁瑣,其實不太實用。第二種就是直接將文件引入,進行更改,但是有一個小缺點,就是文件中的格式可能是utf-8格式的
java利用正則表示式提取字串中的整數和小數部分
最近開發遇到一個新的東西,就是前端傳過來一個字串,需要將裡面的數字提取出來,倒騰了一天,最後還是沒有倒騰出來,最後還是借鑑大佬的方法。記錄一下。 首先是前端傳來的字串“小明通過掃碼向你付款100000.566元”其中暱稱和金額不是固定的,其他是固定的。 於是便考慮使用“通過掃碼向你付
正則表示式提取專案中所有帶IP的網址
假如現在需要在整個專案中搜索所有帶IP的網址,例如webService釋出地址呀這樣的, 隨便舉個栗子 http://127.0.0.1:8080/XXXXX/services/AService
正則表示式提取URL中的檔名和替換
完整的實現替換如下:string temp="http://localhost:2045/glietnet/image/news/news20060414105529.jpg";string tem
php使用正則表示式提取字串中尖括號、小括號、中括號、大括號中的字串
</pre><p>PHP使用正則表示式提取字串中尖括號<>、小括號()、中括號[]、大括號{}中的字元示例,需要的朋友可以參考下</p><p>
HTML中img標籤src路徑的值需要設定成一個變數來表示
在Java開發中,有時候會遇到在顯示圖片時不需要給圖片的src路徑設定成固定的,而是需要寫入從後臺資料庫傳入的路徑變數,下面給出瞭解決此問題的方法。<script> var pictureUrl = data.url;//後臺傳入的圖片路徑,url指的是資料
js 正則表示式去除html字元中所有的標籤(img標籤除外)
廢話不多說,直接上程式碼:description.replace(/<(?!img).*?>/g, ""); 如果保留img,p標籤,則為:description.replace(/<
Java呼叫replaceAll方法通過正則表示式把HTML字串中的img標籤的src預設屬性值uri補全
class Test { public static void main(String[] args) { String domain = "http://avatar.csdn.net";
Java中正則表示式去除html標籤
注:這是Java正則表示式去除html標籤方法。 private static final String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定義sc
用正則表示式提取img中src資料
分享了正則表示式提取img的src的方法,一起來了解下。 要匹配的字串:<img src=image/ad1.gif width="128" height="36"/><img src='image/ad2.gif' width="128" height=
正則表示式替換HTML標籤小寫為大寫
c#在獲取游標時focus方法和select方法有什麼不同呢datagridview的列的DefaultCellStyle.Format設定問題c#在獲取游標時focus方法和select方法有什麼不同呢datagridview的列的DefaultCellStyle.Form
用正則表示式匹配HTML標籤
<script> //匹配HTML標籤 方法一: var str = '<p class="odd" id="odd">123</p>'; var pattern = /<\/?[a-zA-Z]+(\s+[a-zA-
python正則表示式從字串中提取數字
python從字串中提取數字 使用正則表示式,用法如下: ## 總結 ## ^ 匹配字串的開始。 ## $ 匹配字串的結尾。 ## \b 匹配一個單詞的邊界。 ## \d 匹配任意數字。 ## \D
python 正則表示式去除文字中標籤內容
print re.sub("<[^>]*>","",text) 輸出正確結果,而 print t.replace("<[^>]*>","")不能輸出正確結果 import re t = "<text>jsdkjfsgn&l
html字串去除標籤,字串利用正則表示式去除html標籤
html字串是儲存在伺服器的s='<li><a href="http://www.waiqin365.com/p-page-293.html">標題<span class="new">new</span></a>&l
js正則表示式去除HTML標籤
1,得到網頁上的連結地址: string matchString = @"<a[^>]+href=\s*(?:'(?<href>[^']+)'|""(?<href>[^""]+)""|(?<href>[^>\s]+))\s*[^>]
jmeter中mail reader sampler郵件層級多,正則表示式提取器(regular expression extror)無法提取,使用BeanShellPostProcessor解決
問題描述: 1、jmeter通過“MailReader Sampler”連線伺服器,將傳送到郵箱的包含註冊驗證碼郵件下載到jmeter中,在郵件中提取驗證碼,進行後續註冊驗證,即: 2、使用“正則表示式提取器”進行驗證碼提取: 結果無法取到驗證碼; 3、使用“Bea
正則表示式替換 html 標籤
/** * 此方法描述的是:字串的替換 * @param string 需要替換的字串 * @param oldString 被替換的字串 * @param newString 新字串 * @author 作者 E-mail: [em