Regex 如何从该字符串获取唯一链接?

Regex 如何从该字符串获取唯一链接?,regex,swift,Regex,Swift,我只想从该字符串获取链接: "<p><a href=\"https://www.youtube.com/watch?v=i2yscjyIBsk\">https://www.youtube.com/watch?v=i2yscjyIBsk</a></p>\n" 并尝试了这个正则表达式:“ 但我仍然无法理解。通过使用NSDataDetector类,您可以准确地提取链接: let text = "<p><a href=\"https:/

我只想从该字符串获取链接:

"<p><a href=\"https://www.youtube.com/watch?v=i2yscjyIBsk\">https://www.youtube.com/watch?v=i2yscjyIBsk</a></p>\n"
并尝试了这个正则表达式:


但我仍然无法理解。

通过使用
NSDataDetector
类,您可以准确地提取链接:

let text = "<p><a href=\"https://www.youtube.com/watch?v=i2yscjyIBsk\">https://www.youtube.com/watch?v=i2yscjyIBsk</a></p>\n"
let types: NSTextCheckingType = .Link
let detector = try? NSDataDetector(types: types.rawValue)

guard let detect = detector else {
    return
}

let matches = detect.matchesInString(text, options: .ReportCompletion, range: NSMakeRange(0, text.characters.count))

for match in matches {
    print(match.URL!)
}
输出:

string: https://www.youtube.com/watch?v=i2yscjyIBsk

注意:我建议您使用上述解决方案获取链接,特别感谢。

请注意,这并没有提取链接目标(锚中的href),而是提取
之间的文本。该文本不必是链接,也不必等于href。@MartinR我尊重您在这里的正确解释,我在我的案例中也找到了这个有效的解决方案,这就是我建议的原因。请你详细说明一下这个
文本不必是链接,也不必等于href
,所以我确实更新了我和建议:)我的意思是对于
let string=“

\n”
你的代码将提取
什么??
而不是
https://www.google.com
。好了,现在我明白你的意思了,我将搜索更好的解决方案,如果您能提供一些链接,那将非常好。非常感谢:)可能重复的
let string = "<p><a href=\"https://www.youtube.com/watch?v=i2yscjyIBsk\">https://www.youtube.com/watch?v=i2yscjyIBsk</a></p>\n"
let str = string.stringByReplacingOccurrencesOfString("<[^>]+>", withString: "", options: .RegularExpressionSearch, range: nil)
print("string: \(str)")
string: https://www.youtube.com/watch?v=i2yscjyIBsk