Swift:
Bruke regulære uttrykk
Hvordan:
Swifts innebygde støtte for regex benytter klassen NSRegularExpression
, sammen med String-klassens område- og erstatningsmetoder. Nedenfor er et eksempel på bruk av regex for å finne og markere e-postadresser i en tekstblokk:
import Foundation
let text = "Kontakt oss på [email protected] eller [email protected] for mer informasjon."
let regexMønster = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
do {
let regex = try NSRegularExpression(pattern: regexMønster)
let treff = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))
if !treff.isEmpty {
for match in treff {
let range = Range(match.range, in: text)!
print("Fant: \(text[range])")
}
} else {
print("Ingen treff funnet.")
}
} catch {
print("Regex-feil: \(error.localizedDescription)")
}
// Eksempel på utdata:
// Fant: [email protected]
// Fant: [email protected]
For mer komplekse eller bekvemmelighetsfokuserte scenarioer, kan du bruke tredjepartsbiblioteker som SwiftRegex, som forenkler syntaksen og utvider mulighetene. Selv om Swifts standardbibliotek er kraftig, foretrekker noen utviklere disse bibliotekene for deres konsise syntaks og ekstra funksjoner. Slik kan du utføre en lignende oppgave ved hjelp av et hypotetisk tredjepartsbibliotek:
// Under antagelsen om at et bibliotek kalt SwiftRegex eksisterer og er importert
let text = "Ta kontakt på [email protected] eller besøk nettstedet vårt."
let epostMønster = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
let eposter = text.matches(for: epostMønster) // Hypotetisk metode levert av SwiftRegex
if eposter.isEmpty {
print("Ingen e-postadresser funnet.")
} else {
eposter.forEach { epost in
print("Fant: \(epost)")
}
}
// Hypotetisk utdata antar at `matches(for:)`-metoden eksisterer i SwiftRegex:
// Fant: [email protected]
Dette eksemplet illustrerer bruken av et tredjeparts regulært uttrykkspakke for å forenkle finningen av treff i en streng, under antagelsen om at slike bekvemmelighetsmetoder som matches(for:)
eksisterer. Det er viktig å henvise til den respektive tredjepartsbiblioteksdokumentasjonen for nøyaktig syntaks og metode tilgjengelighet.