Swift截取HTML中的所有图片url

在Swift中, 要从HTML格式的String中截取出所有的img的所有图片url,要截取的url就要匹配url,需要用到正则表达式。

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\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\">"]
(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“]

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...