(Swift) Как найти все строки, которые соответствуют регулярному выражению в строке - PullRequest
0 голосов
/ 20 февраля 2020
 func findSrcs(_ content: String) {
            if let match = content.range(of: """
(?<=src=")[^"]+
""", options: .regularExpression) {
                print(content.substring(with: match))
        }
    }

Приведенная выше функция должна возвращать все src с в строке html. «Содержимое» - это строка HTML.
Функция работает, но печатает только первое изображение sr c из Контента. Как поймать их всех?

1 Ответ

1 голос
/ 20 февраля 2020

Вам нужно будет вручную найти все вхождения в вашей строке, используя условие 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"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...