Swift:
Reguliere expressies gebruiken
Hoe?
In Swift gebruik je de NSRegularExpression
klasse om met regex om te gaan. Je definieert een patroon, maakt een regex-object aan en gebruikt het vervolgens om tekst te zoeken of te vervangen. Hier is een basisvoorbeeld:
import Foundation
let input = "Bel me op 555-1234 of 555-5678."
let pattern = "\\d{3}-\\d{4}" // Matcht een patroon zoals 555-1234
do {
let regex = try NSRegularExpression(pattern: pattern)
let matches = regex.matches(in: input, range: NSRange(input.startIndex..., in: input))
for match in matches {
if let range = Range(match.range, in: input) {
let telefoonnummer = String(input[range])
print("Gevonden telefoonnummer: \(telefoonnummer)")
}
}
} catch {
print("Regex fout: \(error.localizedDescription)")
}
Voorbeelduitvoer:
Gevonden telefoonnummer: 555-1234
Gevonden telefoonnummer: 555-5678
Diepere duik
Regex bestaat sinds de jaren 1950, met zijn oorsprong in de formele taaltheorie en is breed gebruikt in Unix-tools. In Swift gebruiken we de NSRegularExpression
klasse, die is geërfd van Objective-C, en die vertrouwt op de ICU-bibliotheek voor Unicode-ondersteuning.
Alternatieven voor regex in Swift omvatten het gebruik van String
’s contains
, split
, of range(of:)
methoden voor eenvoudige gevallen. Voor complexere patroonmatching biedt Swift geen ingebouwde alternatieven voor regex.
Bij het implementeren van regex is het cruciaal om het patroon te optimaliseren om trage zoekopdrachten te vermijden, vooral bij grote tekstlichamen. Daarnaast, onthoud dat regex-operaties uitzonderingen kunnen veroorzaken, dus behandel ze altijd met try-catch
blokken.