Swift截取HTML中的所有图片url

在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”]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄旺鑫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值