Как извлечь совпадения при работе с 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
для удобного извлечения.
Этот код найдет все вхождения формата цены в тексте. Вы можете изменить регулярное выражение под свои нужды.