Swift:
Att använda reguljära uttryck
Hur:
Swifts inbyggda stöd för regex använder klassen NSRegularExpression
, tillsammans med String-klassens metoderna för omfång och ersättning. Nedan följer ett exempel på hur regex kan användas för att hitta och markera e-postadresser inom en textblock:
import Foundation
let text = "Kontakta oss på [email protected] eller [email protected] för mer 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("Hittad: \(text[range])")
}
} else {
print("Inga matchningar hittades.")
}
} catch {
print("Regexfel: \(error.localizedDescription)")
}
// Exempel på utmatning:
// Hittad: [email protected]
// Hittad: [email protected]
För mer komplexa eller bekvämlighetsfokuserade scenarion, kan du använda tredjepartsbibliotek såsom SwiftRegex, som förenklar syntaxen och utökar möjligheterna. Även om Swifts standardbibliotek är kraftfullt, föredrar vissa utvecklare dessa bibliotek för deras kortfattade syntax och extra funktioner. Så här kan du utföra en liknande uppgift med ett hypotetiskt tredjepartsbibliotek:
// Antag att ett bibliotek som heter SwiftRegex finns och är importerat
let text = "Kontakta oss på [email protected] eller besök vår hemsida."
let emailPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
let emails = text.matches(for: emailPattern) // Hypotetisk metod som tillhandahålls av SwiftRegex
if emails.isEmpty {
print("Inga e-postadresser hittades.")
} else {
emails.forEach { email in
print("Hittad: \(email)")
}
}
// Hypotetisk utmatning antagandes att metoden `matches(for:)` finns i SwiftRegex:
// Hittad: [email protected]
Detta exempel illustrerar användningen av ett tredjeparts reguljärt uttrycksbibliotek för att förenkla sökningen efter matchningar inom en sträng, under förutsättning att sådana bekvämlighetsmetoder som matches(for:)
finns. Det är viktigt att hänvisa till den respektive tredjepartsbibliotekets dokumentation för korrekt syntax och metodtillgänglighet.