RegexBuilder-DSL
Setzen Sie reguläre Ausdrücke mit einem lesbaren Builder zusammen.
RegexBuilder-DSL ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.
RegexBuilder-DSL
Komplexe Regex-Literale werden schnell unübersichtlich. Das Modul RegexBuilder ermöglicht es Ihnen, Muster mithilfe einer DSL auf Basis eines Result Builders aus Swift-Code zu erstellen, einschließlich benannter Komponenten und Typen.
RegexBuilder importieren
Importieren Sie das Modul und erstellen Sie anschließend mit dem Builder Regex { ... } einen Regex. Jede Zeile darin ist ein aufeinanderfolgender Bestandteil des Musters.
import RegexBuilder
let re = Regex {
"ID-"
OneOrMore(.digit)
}
print("ID-42".contains(re))OneOrMore
OneOrMore(...) findet eine oder mehrere Instanzen der angegebenen Komponente und entspricht damit +. .digit ist eine integrierte Zeichenklasse.
import RegexBuilder
let number = Regex {
OneOrMore(.digit)
}
if let m = "abc789".firstMatch(of: number) {
print(m.0)
}ZeroOrMore und Optionally
ZeroOrMore entspricht * und Optionally entspricht ?. Damit können Sie Teile des Musters wiederholbar oder überspringbar machen.
import RegexBuilder
let re = Regex {
"color"
Optionally("u")
"r"
}
print("colour".wholeMatch(of: re) != nil)
print("color".wholeMatch(of: re) != nil)Capture
Capture { ... } erstellt eine Erfassungsgruppe. Die gefundene Teilzeichenfolge erscheint im Ausgabetupel, genau wie Klammern in einem Literal.
import RegexBuilder
let re = Regex {
"v"
Capture { OneOrMore(.digit) }
}
if let m = "v123".wholeMatch(of: re) {
print("Version: \(m.1)")
}Erfassungen transformieren
Ein Capture kann eine Transformations-Closure enthalten, die den gefundenen Text in einen typisierten Wert umwandelt. Dadurch ist die Ausgabe bereits ein Int oder ein anderer Typ.
import RegexBuilder
let re = Regex {
Capture {
OneOrMore(.digit)
} transform: { Int($0)! }
}
if let m = "42".wholeMatch(of: re) {
let n: Int = m.1
print(n + 1)
}CharacterClass
Verwenden Sie CharacterClass oder integrierte Klassen wie .word, .whitespace und Bereiche wie ("a"..."z"), um festzulegen, welche Zeichen zulässig sind.
import RegexBuilder
let re = Regex {
One(.word)
ZeroOrMore(("a"..."z"))
}
print("hello".contains(re))Anker im Builder
Fügen Sie Anchor.startOfLine und Anchor.endOfLine für Positionsprüfungen innerhalb des Builders hinzu.
import RegexBuilder
let re = Regex {
Anchor.startOfLine
OneOrMore(.digit)
Anchor.endOfLine
}
print("100".wholeMatch(of: re) != nil)Wiederverwendbare Komponenten
Sie können Teilmuster in Variablen speichern und zusammensetzen. Dadurch werden große Regexes modular und gut lesbar.
import RegexBuilder
let field = Reference(Substring.self)
let re = Regex {
Capture(as: field) { OneOrMore(.word) }
}
if let m = "name".firstMatch(of: re) {
print(m[field])
}Mehrere Erfassungen
Jedes Capture fügt der Ausgabe ein Element an der entsprechenden Position hinzu. Ein Parser für Datumsangaben stellt dadurch Jahr, Monat und Tag getrennt bereit.
import RegexBuilder
let date = Regex {
Capture { Repeat(.digit, count: 4) }
"-"
Capture { Repeat(.digit, count: 2) }
}
if let m = "2024-05".wholeMatch(of: date) {
print("\(m.1) / \(m.2)")
}DSL oder Literal auswählen
Verwenden Sie Literale für kurze Muster und die DSL für lange Muster, die von Namen, Typen und Transformationen profitieren. Beide Varianten sind austauschbar und können sogar ineinander verschachtelt werden.
import RegexBuilder
let re = Regex {
"#"
Capture { /[0-9a-fA-F]{6}/ }
}
if let m = "#FF8800".wholeMatch(of: re) {
print("Hex: \(m.1)")
}Kurze Überprüfung
Welche RegexBuilder-Komponente findet eine oder mehrere Instanzen von etwas?
Zusammenfassung
Mit der RegexBuilder-DSL erstellen Sie Regexes aus Swift-Code mit Regex { } und verwenden dabei OneOrMore, Optionally, Capture mit Transformationen, Zeichenklassen und Anker. Dadurch werden komplexe Muster lesbar und typsicher. Als Nächstes verändern Sie Text durch Ersetzen und Aufteilen.
Häufig gestellte Fragen
Ist die Lektion „RegexBuilder-DSL“ kostenlos?
Ja — der vollständige Text von „RegexBuilder-DSL“ 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 „RegexBuilder-DSL“?
Setzen Sie reguläre Ausdrücke mit einem lesbaren Builder zusammen. 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 3 von 4.
Wie lange dauert die Lektion „RegexBuilder-DSL“?
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.