Використання регулярних виразів

Swift:
Використання регулярних виразів

Як:

Рідна підтримка regex в Swift використовує клас NSRegularExpression, разом з методами діапазону та заміни класу String. Нижче наведено приклад використання regex для пошуку та виділення електронних адрес у блоку тексту:

import Foundation

let text = "Зв'яжіться з нами за адресою [email protected] або [email protected] для отримання додаткової інформації."
let regexPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

do {
    let regex = try NSRegularExpression(pattern: regexPattern)
    let matches = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))

    if !matches.isEmpty {
        for match in matches {
            let range = Range(match.range, in: text)!
            print("Знайдено: \(text[range])")
        }
    } else {
        print("Збігів не знайдено.")
    }
} catch {
    print("Помилка regex: \(error.localizedDescription)")
}

// Приклад виводу:
// Знайдено: [email protected]
// Знайдено: [email protected]

Для більш складних або націлених на зручність сценаріїв, ви можете використовувати сторонні бібліотеки, такі як SwiftRegex, які спрощують синтаксис та розширюють можливості. Хоча стандартна бібліотека Swift могутня, деякі розробники віддають перевагу цим бібліотекам за їхній короткий синтаксис та додаткові можливості. Ось як ви можете виконати подібне завдання, використовуючи гіпотетичну сторонню бібліотеку:

// Припустимо, що існує бібліотека під назвою SwiftRegex і вона імпортована
let text = "Напишіть нам на [email protected] або відвідайте наш сайт."
let emailPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

let emails = text.matches(for: emailPattern) // Гіпотетичний метод, який надається SwiftRegex
if emails.isEmpty {
    print("Адрес електронної пошти не знайдено.")
} else {
    emails.forEach { email in
        print("Знайдено: \(email)")
    }
}

// Гіпотетичний вивід, припускаючи, що метод `matches(for:)` існує у SwiftRegex:
// Знайдено: [email protected]

Цей приклад ілюструє використання стороннього пакету регулярних виразів для спрощення пошуку відповідностей у рядку, припускаючи, що існують такі зручні методи, як matches(for:). Важливо звернутися до відповідної документації сторонньої бібліотеки для точного синтаксису та наявності методів.