Как извлечь совпадения при работе с regex в Swift?

Для извлечения совпадений по регулярному выражению в Swift можно использовать класс NSRegularExpression, который позволяет искать шаблоны в строках. Вот пример, как это сделать:

import Foundation

let text = "Цена товара $12.99 и номер 123-456."
let pattern = "\\d{2}\\.\\d{2}" // Регулярное выражение для поиска цены (например, "12.99")

do {
    let regex = try NSRegularExpression(pattern: pattern)
    let matches = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))
    
    let results = matches.map {
        String(text[Range($0.range, in: text)!])
    }
    
    print(results) // Вывод: ["12.99"]
} catch {
    print("Некорректное регулярное выражение: \(error.localizedDescription)")
}

Пояснение:

  • NSRegularExpression: Класс, используемый для работы с регулярными выражениями в Swift.
  • matches(in:range:): Ищет в строке совпадения по регулярному выражению в указанном диапазоне.
  • NSRange: Определяет диапазон текста для поиска.
  • text[Range($0.range, in: text)!]: Преобразует диапазон NSRange обратно в диапазон String для удобного извлечения.

Этот код найдет все вхождения формата цены в тексте. Вы можете изменить регулярное выражение под свои нужды.