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.