Korzystanie z wyrażeń regularnych

Swift:
Korzystanie z wyrażeń regularnych

Jak to zrobić:

Natywne wsparcie Swifta dla regex wykorzystuje klasę NSRegularExpression, razem z metodami zakresu i zastąpienia klasy String. Poniżej znajduje się przykład użycia regex, aby znaleźć i wyróżnić adresy e-mail w bloku tekstu:

import Foundation

let text = "Contact us at [email protected] or [email protected] for more information."
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("Znaleziono: \(text[range])")
        }
    } else {
        print("Nie znaleziono dopasowań.")
    }
} catch {
    print("Błąd regex: \(error.localizedDescription)")
}

// Przykładowe wyjście:
// Znaleziono: [email protected]
// Znaleziono: [email protected]

Dla bardziej złożonych lub bardziej wygodnych scenariuszy możesz użyć bibliotek stron trzecich, takich jak SwiftRegex, które upraszczają składnię i rozszerzają możliwości. Chociaż biblioteka standardowa Swifta jest potężna, niektórzy programiści preferują te biblioteki ze względu na ich zwięzłą składnię i dodatkowe funkcje. Oto jak można by wykonać podobne zadanie, używając hipotetycznej biblioteki stron trzecich:

// Zakładając, że istnieje biblioteka o nazwie SwiftRegex i jest zaimportowana
let text = "Reach out at [email protected] or visit our website."
let emailPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

let emails = text.matches(for: emailPattern) // Hipotetyczna metoda dostarczona przez SwiftRegex
if emails.isEmpty {
    print("Nie znaleziono adresów email.")
} else {
    emails.forEach { email in
        print("Znaleziono: \(email)")
    }
}

// Hipotetyczne wyjście zakładając, że metoda `matches(for:)` istnieje w SwiftRegex:
// Znaleziono: [email protected]

Przykład ten ilustruje, jak używać zewnętrznego pakietu wyrażeń regularnych do uproszczenia znajdowania dopasowań w ciągu znaków, zakładając, że istnieją takie wygodne metody jak matches(for:). Ważne jest, aby odwołać się do odpowiedniej dokumentacji biblioteki stron trzecich, aby uzyskać dokładną składnię i dostępność metod.