gpt4 book ai didi

ios - 使用正则表达式检索链接数组 - Swift

转载 作者:行者123 更新时间:2023-11-29 01:38:30 25 4
gpt4 key购买 nike

我正在尝试解析包含这些值的 html 页面:

<a href="somesite.html?id=123">...</a>
<a href="somesite.html?id=456">...</a>
<a href="somesite.html?id=789">...</a>
<a href="anothersite.html">...</a>

我将如何解析 Html 字符串以获取仅包含 somesite.html 的数组:

["somesite.html?id=123", "somesite.html?id=456", "somesite.html?id=456"]

已编辑

使用 Zhiguo Wang 的基本答案,我似乎无法只获得 somesite.html id 值...数组中的第 3 项包含多余的字符:

let htmlString = "<a href=\"somesite.html?id=123\">...</a>" +
"<a href=\"somesite.html?id=456\">...</a>" +
"<a href=\"somesite.html?id=789\">...</a>" +
"<a href=\"anothersite.html\">...</a>\""
let seperateComponent = "<a href=\"somesite.html?id="

let linkExp = "[\\w\\W]*\">"

返回这个值:

["123", "456", "789\\">...</a><a href=\\"anothersite.html"]

预期值(value): ["123", "456", "789"]

……嗯。将 linkExp 更改为以下内容即可解决。\W 在正则表达式中代表什么?

let linkExp = "[\\w]*\">"

..长度不对。转换为 NSString 以获取适当的长度。

已编辑 2

看起来如果这个字符串先于 somesite,那么它在数组中包含 Origin:

<meta name=\"referrer\" content=\"origin\">

最佳答案

话不多说,给我看代码

    let htmlString = "<a href=\"somesite.html?id=123\">...</a><a href=\"somesite.html?id=456\">...</a><a href=\"somesite.html?id=789\">...</a>"
let seperateComponent = "<a href=\""

let linkExp = "[\\w\\W]*\">"
let linkRegExp = NSRegularExpression(pattern:linkExp, options: NSRegularExpressionOptions.CaseInsensitive, error: nil)
let seperatedArray = htmlString.componentsSeparatedByString(seperateComponent)
var resultArray = [String]()

if seperatedArray.count > 1 {
for seperatedString in seperatedArray {
if seperatedString.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) > 3{
let myRange = linkRegExp!.rangeOfFirstMatchInString(seperatedString, options:NSMatchingOptions.ReportCompletion, range: NSMakeRange(0, seperatedString.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)))
if myRange.location != NSNotFound {
let matchString = (seperatedString as NSString).substringWithRange(myRange)
let linkString = (matchString as NSString).substringToIndex(matchString.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) - 2)

resultArray.append(linkString)
}
}
}
}

println(resultArray)

这些代码已经在 xcode 6.4 上运行,结果是正确的。抱歉“我需要至少 10 个声誉才能发布图像”,所以结果图片不会发布在这里。

关于ios - 使用正则表达式检索链接数组 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32708186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com