【问题标题】:(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。如何全部抓到?
【问题讨论】:
标签:
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"]