Вот одно из возможных решений для захвата значения между href="
и закрывающим "
. Это работает только с одним href в строке.
let html = "<a href = \"https://mitsui-shopping-park.com/lalaport/koshien/\" target=\"_blank\"> https://mitsui-shopping-park.com/lalaport / koshien / </a>"
if let hrefRange = html.range(of: "(?:href\\s*=\\s*\")[^\"]*(?:\")", options: .regularExpression) {
let href = html[hrefRange]
print(href)
} else {
print("There is no href")
}
Давайте разберем это регулярное выражение:
Во-первых, давайте удалим лишние \
, необходимые в RE, чтобы сделать его строкой Swift значения. Это оставляет нас с:
(?:href\s*=\s*")[^"]*(?:")
Это состоит из трех основных частей:
(?:href\s*=\s*") - the href, optional space, =, optional space, and opening quote
[^"]* - the actual URL - everything that isn't a quote
(?:") - the close quote
Синтаксис (?: )
означает, что содержимое внутри не будет частью возвращаемой строки.