Reguläre Ausdrücke in Swift: Praktische Beispiele für iOS/macOS

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Reguläre Ausdrücke in Swift mit Beispielen: in der Praxis



Reguläre Ausdrücke (regex) sind ein leistungsstarkes Werkzeug für die Arbeit mit Textdaten. In Swift wird für die Arbeit mit regulären Ausdrücken die Klasse NSRegularExpression aus dem Framework Foundation verwendet. In diesem Artikel werden wir praktische Beispiele für die Verwendung regulärer Ausdrücke in Swift für iOS- und macOS-Anwendungen durchgehen: von der einfachen Suche bis zur komplexen Validierung und Textersetzung.



Grundlagen der Arbeit mit NSRegularExpression in Swift



Die Klasse NSRegularExpression bietet alle notwendigen Methoden für die Arbeit mit regulären Ausdrücken. Der grundlegende Arbeitsablauf umfasst drei Schritte:



  1. Erstellen eines Objekts aus dem regulären Ausdrucksmuster
  2. Anwenden des Musters auf eine Zeichenkette
  3. Verarbeiten der Ergebnisse (Übereinstimmungen, Ersetzungen)


Erstellen eines regulären Ausdrucks



So erstellen und wenden Sie einen einfachen regulären Ausdruck zur Suche nach dem Wort "Swift" an:



import Foundation

let text = "Wir lernen Swift und iOS-Entwicklung"let pattern = "Swift"

do { let regex = try NSRegularExpression(pattern: pattern) let results = regex.matches(in: text, range: NSRange(text.startIndex..., in: text)) for match in results { if let range = Range(match.range, in: text) { print("Gefunden: \\(text[range])") } }} catch { print("Fehler im regulären Ausdruck: \\(error.localizedDescription)")}


Beachten Sie die Konvertierung von Range – dies ist die Standardmethode für die Arbeit mit Positionen in Swift-Zeichenketten. Ausgabe: "Gefunden: Swift".



Praktisches Beispiel 1: Suche nach E-Mail-Adressen



Eine der häufigsten Aufgaben ist das Extrahieren von E-Mail-Adressen aus Text. Betrachten wir ein Beispiel, das alle E-Mails in einer Zeichenkette findet:



import Foundation

func findEmails(in text: String) -> [String] { let pattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,}" var emails: [String] = [] do { let regex = try NSRegularExpression(pattern: pattern) let results = regex.matches(in: text, range: NSRange(text.startIndex..., in: text)) for match in results { if let range = Range(match.range, in: text) { emails.append(String(text[range])) } } } catch { print("Fehler: \\(error)") } return emails}

// Beispielverwendunglet sampleText = "Kontakte: support@example.com und admin@site.org"let foundEmails = findEmails(in: sampleText)print(foundEmails) // ["support@example.com", "admin@site.org"]


Dieses Muster berücksichtigt die in E-Mails erlaubten Standardzeichen und prüft das Vorhandensein eines Punktes im Domain-Teil. Für die Produktion kann die Unterstützung kyrillischer Domains hinzugefügt werden.



Praktisches Beispiel 2: Validierung einer Telefonnummer



Die Validierung von Eingabedaten ist ein wichtiger Teil jeder Anwendung. So überprüfen Sie eine russische Telefonnummer im Format +7 (XXX) XXX-XX-XX:



import Foundation

func isValidPhoneNumber(_ phone: String) -> Bool { // Muster für russische Nummer: +7 (XXX) XXX-XX-XX let pattern = "^\\\\+7\\\\s?\\\\(?[0-9]{3}\\\\)?\\\\s?[0-9]{3}-?[0-9]{2}-?[0-9]{2}$" do { let regex = try NSRegularExpression(pattern: pattern) let range = NSRange(location: 0, length: phone.utf16.count) return regex.firstMatch(in: phone, range: range) != nil } catch { return false }}

// Testenlet validNumbers = ["+7 (495) 123-45-67", "+74951234567", "+7 495 1234567"]let invalidNumbers = ["8 (495) 123-45-67", "+7 (495) 123-45-678", "abc"]

for number in validNumbers { print("\\(number): \\(isValidPhoneNumber(number))") // true}

for number in invalidNumbers { print("\\(number): \\(isValidPhoneNumber(number))") // false}


Das Muster verwendet Anker

Blogs

Buchempfehlungen