ios - 从 RSS feed swift 获取 img url

标签 ios regex swift rss

我希望能够从一段字符串中检索 img url。

这是我尝试检索的 img URL 示例:

<p><img width="357" height="500" src="http://images.sgcafe.net/2015/05/OVA1-357x500.jpg" class="attachment-         medium wp-post-image" alt="OVA1" />

我当前的实现在 textCheck 处崩溃,它显示它的 NIL。我查看了 stackoverflow 上的 Objective C 解决方案并快速实现了它,但它似乎不起作用。

var elementString = item.summary
var regex: NSRegularExpression = NSRegularExpression(pattern: "img     src=\"([^\"]*)\"", options: .CaseInsensitive, error: nil)!
let range = NSMakeRange(0, count(elementString))
var textCheck = regex.firstMatchInString(elementString, options: nil, range: range)!
let text = (elementString as NSString).substringWithRange(textCheck.rangeAtIndex(1))

最佳答案

您应该使用尽可能多的字符,直到 src 属性。您可以使用 .*? 来完成:

var regex: NSRegularExpression = NSRegularExpression(pattern: "<img.*?src=\"([^\"]*)\"", options: .CaseInsensitive, error: nil)!

此外,您还可以使用 Ross' iOS Swift blog 中的示例

import Foundation

extension String {
    func firstMatchIn(string: NSString!, atRangeIndex: Int!) -> String {
        var error : NSError?
        let re = NSRegularExpression(pattern: self, options: .CaseInsensitive, error: &error)
        let match = re.firstMatchInString(string, options: .WithoutAnchoringBounds, range: NSMakeRange(0, string.length))
        return string.substringWithRange(match.rangeAtIndex(atRangeIndex))
    }
}

在你的调用代码中:

var result = "<img.*?src=\"([^\"]*)\"".firstMatchIn(elementString, atRangeIndex: 1)

要确保 . 匹配换行符,请使用 options: NSRegularExpressionOptions.DotMatchesLineSeparators

关于ios - 从 RSS feed swift 获取 img url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29999974/

相关文章:

ios - 在 CGRectMake、Swift、UIkit 中使用变量

ios - 如何找到 UITextView 中的第一个 URL?

iphone - 使用 ARC 的 ABNewPersonViewController 内存崩溃

mysql - 使用 MySQL 替换内容

ios - Swift:如何存储用户偏好?

印度银行帐号的正则表达式

PHP:替换字符串最后一个括号中的文本

ios - swift中的swiftyjson获取不到数据

ios - 如何手动调用 viewDidLoad?

ios - Swift 意外错误无法分配给 '' 中的 'self'