【问题标题】:(Swift) How to find all strings that matches regex in string(Swift)如何在字符串中查找与正则表达式匹配的所有字符串
【发布时间】:2020-02-20 16:14:33
【问题描述】:
 func findSrcs(_ content: String) {
            if let match = content.range(of: """
(?<=src=")[^"]+
""", options: .regularExpression) {
                print(content.substring(with: match))
        }
    }

上面的函数需要返回html字符串中的所有srcs。 “内容”是 HTML 字符串。
功能有效,但仅从 Content 打印第一张图像的 src。如何全部抓到?

【问题讨论】:

  • 你必须使用NSRegularExpression

标签: ios arrays swift string


【解决方案1】:

您需要使用类似于此 post 中使用的条件的 while 条件手动查找字符串中的所有匹配项,并获取字符串子序列而不是其范围:

func findSrcs(_ content: String) -> [Substring] {
    let pattern = #"(?<=src=")[^"]+"#
    var srcs: [Substring] = []
    var startIndex = content.startIndex
    while let range = content[startIndex...].range(of: pattern, options: .regularExpression) {
            srcs.append(content[range])
            startIndex = range.upperBound
    }
    return srcs
}

游乐场测试:

let content = """
<span>whatever</span>
<img src="smiley.gif" alt="Smiley face">
<span>whatever</span>
<img src="stackoverflow.jpg" alt="Stack Overflow">
"""

print(findSrcs(content))

这将打印出来

["smiley.gif", "stackoverflow.jpg"]

【讨论】:

    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多