Regex-Literale und -Vergleiche
Vergleichen Sie Muster mit dem Typ Regex.
Regex-Literale und -Vergleiche ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Regex in Swift
Swift 5.7+ bietet native reguläre Ausdrücke in der Standardbibliothek und in Foundation. Sie können einen regulären Ausdruck als Literal zwischen Schrägstrichen schreiben, etwa /\d+/, und der Compiler überprüft ihn bereits beim Erstellen.
Ein Regex-Literal
Ein Regex-Literal erzeugt einen Regex-Wert. Sein Typ bildet ab, was der Treffer liefert. Das einfachste Muster sucht nach einer festgelegten Zeichenfolge.
let pattern = /hello/
if "hello world".contains(pattern) {
print("Found hello")
}wholeMatch(of:)
wholeMatch(of:) ist nur erfolgreich, wenn die gesamte Zeichenfolge dem Muster entspricht. Die Methode gibt einen optionalen Treffer zurück oder nil, wenn die gesamte Zeichenfolge nicht übereinstimmt.
let digits = /\d+/
if let m = "12345".wholeMatch(of: digits) {
print("Whole match: \(m.output)")
} else {
print("No whole match")
}firstMatch(of:)
firstMatch(of:) durchsucht die Zeichenfolge und gibt die erste Stelle zurück, an der das Muster irgendwo darin übereinstimmt.
let word = /\w+/
if let m = " swift rocks".firstMatch(of: word) {
print("First word: \(m.output)")
}Den Trefferbereich aufrufen
Ein Treffer stellt einen range in der ursprünglichen Zeichenfolge bereit, sodass Sie genau wissen, wo er aufgetreten ist.
let text = "abc123def"
if let m = text.firstMatch(of: /\d+/) {
print("Matched: \(m.output)")
print("At: \(text[m.range])")
}Zeichenklassen
Innerhalb eines Musters steht \d für eine Ziffer, \w für ein Wortzeichen und \s für Leerraum. Mit eckigen Klammern definieren Sie eine eigene Menge wie [aeiou].
let vowel = /[aeiou]/
if let m = "sky".firstMatch(of: vowel) {
print("Vowel: \(m.output)")
} else {
print("No vowels found")
}Quantifizierer
Quantifizierer steuern Wiederholungen: * steht für null oder mehr, + für eins oder mehr, ? für optional und {n,m} für eine begrenzte Anzahl.
let phone = /\d{3}-\d{4}/
print("555-1234".wholeMatch(of: phone) != nil)
print("12-34".wholeMatch(of: phone) != nil)Anker
Verwenden Sie ^, um am Anfang zu verankern, und $ am Ende einer Zeile. Anker verbrauchen keine Zeichen, sondern bestätigen eine Position.
let startsWithCap = /^[A-Z]\w*/
if let m = "Swift".firstMatch(of: startsWithCap) {
print("Matched: \(m.output)")
}Groß- und Kleinschreibung ignorieren
Sie können die Groß- und Kleinschreibung ignorieren, indem Sie .ignoresCase() an einen Regex-Wert anhängen. Das ist nützlich, wenn die Schreibweise der Eingabe nicht vorhersehbar ist.
let pattern = /swift/.ignoresCase()
print("I love SWIFT".contains(pattern))Mit matches(of:) suchen
matches(of:) gibt eine Collection aller nicht überlappenden Treffer in der Zeichenfolge zurück, sodass Sie über alle Treffer iterieren können.
let nums = "a1 b22 c333"
for m in nums.matches(of: /\d+/) {
print(m.output)
}Eingaben validieren
Eine häufige Anwendung ist die Validierung: Erstellen Sie ein Muster für das vollständige erwartete Format und prüfen Sie es mit wholeMatch, das bei einer Abweichung nil zurückgibt.
func isZip(_ s: String) -> Bool {
s.wholeMatch(of: /\d{5}/) != nil
}
print(isZip("90210"))
print(isZip("ABCDE"))Kurze Überprüfung
Welche Methode ist nur erfolgreich, wenn die gesamte Zeichenfolge übereinstimmt?
Zusammenfassung
Sie haben gelernt, Regex-Literale mit Schrägstrichen zu schreiben und mit wholeMatch(of:), firstMatch(of:) und matches(of:) nach Treffern zu suchen. Außerdem haben Sie Zeichenklassen, Quantifizierer, Anker sowie die Suche ohne Beachtung der Groß- und Kleinschreibung kennengelernt. Als Nächstes lesen Sie mit Erfassungsgruppen Daten aus Treffern aus.
Häufig gestellte Fragen
Ist die Lektion „Regex-Literale und -Vergleiche“ kostenlos?
Ja — der vollständige Text von „Regex-Literale und -Vergleiche“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Regex-Literale und -Vergleiche“?
Vergleichen Sie Muster mit dem Typ Regex. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Regex-Literale und -Vergleiche“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Regex-Literale und -Vergleiche
- Capture-Gruppen
- RegexBuilder-DSL
- Text ersetzen und aufteilen