从RSS feed swift

时间:2015-05-02 08:14:05

标签: ios regex swift rss

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

以下是我正在尝试检索的img网址示例:

<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就是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)) 。我查看了stackoverflow上的Objective C解决方案,并在swift中实现了它,但它似乎不起作用。

order by

1 个答案:

答案 0 :(得分:3)

您应尽可能多地使用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