在Swift中, 要從HTML格式的String中截取出所有的img的所有圖片url,要截取的url就要匹配url,需要用到正則表達式。
- Swift使用正則截取字符串的方法:
extension String {
/**
根據 正則表達式 截取字符串
- parameter regex: 正則表達式
- returns: 字符串數組
*/
public func matchesForRegex(regex: String) -> [String]? {
do {
let regularExpression = try NSRegularExpression(pattern: regex, options: [])
let range = NSMakeRange(0, self.characters.count)
let results = regularExpression.matchesInString(self, options: [], range: range)
let string = self as NSString
return results.map { string.substringWithRange($0.range)}
} catch {
return nil
}
}
}
- 匹配img標籤的正則表達式爲:
<img\b(?=\s)(?=(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\ssrc=['"]([^"]*)['"]?)(?:[^>=]|='[^']*'|="[^"]*"|=[^'"\s]*)*"\s?\/?>
- 在swift中的正則表達式書寫爲:
let regex = "<img\\b(?=\\s)(?=(?:[^>=]|='[^']*'|=\"[^\"]*\"|=[^'\"][^\\s>]*)*?\\ssrc=['\"]([^\"]*)['\"]?)(?:[^>=]|='[^']*'|=\"[^\"]*\"|=[^'\"\\s]*)*\"\\s?\\/?>"
- 使用案例:
let string = "圖片1<div><img src=\"http://cms-bucket.nosdn.127.net/catchpic/C/C7/C7643B52B98D04979AA173C6D6219958.jpg\" alt=\"Gravatar\"><br></div><div>圖片2</div><div><img src=\"http://cms-bucket.nosdn.127.net/catchpic/C/C7/C7643B52B98D04979AA173C6D6219958.jpg\" alt=\"Gravatar\"><br></div><div><br></div><div>圖片3</div><div><img src=\"http://cms-bucket.nosdn.127.net/catchpic/C/C7/C7643B52B98D04979AA173C6D6219958.jpg\" alt=\"Gravatar\"><br></div><div><br></div>"
// 截取img標籤
let resultItems = string.matchesForRegex(regex)
- 截取得到的resultItems爲:
["<img src=\"http://cms-bucket.nosdn.127.net/catchpic/C/C7/C7643B52B98D04979AA173C6D6219958.jpg\" alt=\"Gravatar\">",
"<img src=\"http://cms-bucket.nosdn.127.net/catchpic/C/C7/C7643B52B98D04979AA173C6D6219958.jpg\" alt=\"Gravatar\">",
"<img src=\"http://cms-bucket.nosdn.127.net/catchpic/C/C7/C7643B52B98D04979AA173C6D6219958.jpg\" alt=\"Gravatar\">"]
- 如果單單只是截取img的url地址,使用的正則表達式爲:
(http[^\s]+(jpg|jpeg|png|tiff)\b)
- 在Swift中書寫爲:
let regex = "(http[^\\s]+(jpg|jpeg|png|tiff)\\b)"
- 使用案例:
// 截取所有img url
let resultItems = string.matchesForRegex(regex)
- 結果爲:
[“http://cms-bucket.nosdn.127.net/catchpic/C/C7/C7643B52B98D04979AA173C6D6219958.jpg”, “http://cms-bucket.nosdn.127.net/catchpic/C/C7/C7643B52B98D04979AA173C6D6219958.jpg”, “http://cms-bucket.nosdn.127.net/catchpic/C/C7/C7643B52B98D04979AA173C6D6219958.jpg”]