Reguläre Ausdrücke in Swift mit Beispielen: für Anfänger

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: Vollständiger Leitfaden für Anfänger

Reguläre Ausdrücke (regex) sind ein leistungsstarkes Werkzeug zum Suchen, Ersetzen und Validieren von Textdaten. In Swift wird die Arbeit mit regulären Ausdrücken über die Klasse NSRegularExpression aus dem Foundation-Framework realisiert. In diesem Artikel lernen Sie, wie Sie reguläre Ausdrücke in Anwendungen für iOS und macOS erstellen und anwenden, analysieren reale Beispiele und erlernen die Grundlagen der Syntax.



1. Grundlagen der Syntax regulärer Ausdrücke

Bevor Sie Code in Swift schreiben, ist es wichtig, die grundlegenden Zeichen und Konstrukte von regex zu verstehen. Hier sind die wichtigsten Elemente:

  • . — ein beliebiges Zeichen (außer Zeilenumbruch)
  • * — 0 oder mehr Wiederholungen des vorherigen Zeichens
  • + — 1 oder mehr Wiederholungen
  • ? — 0 oder 1 Wiederholung (macht das vorherige Zeichen optional)
  • \\d — eine beliebige Ziffer (0-9)
  • \\w — ein beliebiger Buchstabe, eine Ziffer oder ein Unterstrich
  • [abc] — eines der Zeichen a, b oder c
  • [^abc] — ein beliebiges Zeichen außer a, b, c
  • ^ — Anfang der Zeichenkette
  • $ — Ende der Zeichenkette

Diese Zeichen werden kombiniert, um Muster zu erstellen. Beispielsweise bedeutet das Muster ^[A-Za-z]+$: Die Zeichenkette besteht nur aus Buchstaben des lateinischen Alphabets von Anfang bis Ende.



2. Erstellen und Verwenden von NSRegularExpression in Swift

In Swift beginnt die Arbeit mit regex mit dem Import von Foundation und der Erstellung einer Instanz von NSRegularExpression. Betrachten wir ein einfaches Beispiel: Suchen aller Ziffern in einer Zeichenkette.

import Foundation

let text = "Meine Nummer: 123-456-7890"let pattern = "\\\\d+" // Muster: eine oder mehr Ziffern

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)")}// Ausgabe:// Gefunden: 123// Gefunden: 456// Gefunden: 7890

Beachten Sie die Maskierung des Backslashs: In der Swift-Zeichenkette "\\\\d" entspricht dies dem regulären Ausdruck \\d. Die Klasse NSRegularExpression wirft eine Ausnahme bei einem ungültigen Muster, daher verwenden wir try-catch.



2.1. Arbeiten mit NSRange

Die Methode matches(in:range:) gibt ein Array von NSTextCheckingResult-Objekten zurück. Jedes Ergebnis enthält einen Bereich (NSRange) der gefundenen Übereinstimmung. Zur Konvertierung in einen Swift Range verwenden Sie den Initialisierer Range(match.range, in: text).



3. Praktische Beispiele für reguläre Ausdrücke

Betrachten wir drei typische Aufgaben: E-Mail-Überprüfung, URL-Extraktion und Textersetzung.



3.1. Validierung einer E-Mail-Adresse

Prüfen wir, ob eine Zeichenkette einem einfachen E-Mail-Muster entspricht (vereinfachte Version):

func isValidEmail(_ email: String) -> Bool {    let pattern = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,}$"    let regex = try? NSRegularExpression(pattern: pattern)    let range = NSRange(location: 0, length: email.utf16.count)    return regex?.firstMatch(in: email, range: range) != nil}

print(isValidEmail("test@example.com")) // trueprint(isValidEmail("invalid-email")) // false

Hier verwenden wir firstMatch, das die erste Übereinstimmung zurückgibt. Wenn es keine Übereinstimmungen gibt, wird nil zurückgegeben.



3.2. Extrahieren von URLs aus Text

Angenommen, wir haben eine Zeichenkette mit mehreren Links. Extrahieren wir alle URLs:

let text = "Besuchen Sie die Website https://pythonlib.ru oder schreiben Sie an support@pythonlib.ru"let pattern = "https?://[\\\\w./%-]+"

do

Blogs

Buchempfehlungen