DSL RegexBuilder
Componi regex con un builder leggibile.
DSL RegexBuilder è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.
DSL RegexBuilder
I literal regex complessi diventano difficili da leggere. Il modulo RegexBuilder consente di costruire pattern dal codice Swift usando una DSL basata su result builder, con componenti e tipi denominati.
Importare RegexBuilder
Importi il modulo, quindi costruisca un Regex con il builder Regex { ... }. Al suo interno, ogni riga rappresenta una parte sequenziale del pattern.
import RegexBuilder
let re = Regex {
"ID-"
OneOrMore(.digit)
}
print("ID-42".contains(re))OneOrMore
OneOrMore(...) corrisponde a una o più occorrenze del componente indicato, come +. .digit è una classe di caratteri integrata.
import RegexBuilder
let number = Regex {
OneOrMore(.digit)
}
if let m = "abc789".firstMatch(of: number) {
print(m.0)
}ZeroOrMore e Optionally
ZeroOrMore corrisponde a * e Optionally a ?. Consentono di ripetere o saltare parti del pattern.
import RegexBuilder
let re = Regex {
"color"
Optionally("u")
"r"
}
print("colour".wholeMatch(of: re) != nil)
print("color".wholeMatch(of: re) != nil)Capture
Capture { ... } crea un gruppo di cattura. La sottostringa corrispondente appare nella tupla di output, proprio come accade con le parentesi in un literal.
import RegexBuilder
let re = Regex {
"v"
Capture { OneOrMore(.digit) }
}
if let m = "v123".wholeMatch(of: re) {
print("Version: \(m.1)")
}Trasformare le catture
Un Capture può includere una closure di trasformazione che converte il testo corrispondente in un valore tipizzato, così l'output è già un Int o un altro tipo.
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
Usi CharacterClass o elementi integrati come .word, .whitespace e intervalli come ("a"..."z") per definire quali caratteri sono consentiti.
import RegexBuilder
let re = Regex {
One(.word)
ZeroOrMore(("a"..."z"))
}
print("hello".contains(re))Ancore nel builder
Aggiunga Anchor.startOfLine e Anchor.endOfLine per inserire asserzioni posizionali nel builder.
import RegexBuilder
let re = Regex {
Anchor.startOfLine
OneOrMore(.digit)
Anchor.endOfLine
}
print("100".wholeMatch(of: re) != nil)Componenti riutilizzabili
È possibile memorizzare i sottopattern in variabili e combinarli, rendendo le regex di grandi dimensioni modulari e leggibili.
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])
}Più catture
Ogni Capture aggiunge un elemento all'output nell'ordine, quindi un parser di date espone separatamente anno, mese e giorno.
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)")
}Scegliere tra DSL e literal
Usi i literal per i pattern brevi e la DSL per quelli lunghi che traggono vantaggio da nomi, tipi e trasformazioni. Sono intercambiabili e possono anche essere annidati.
import RegexBuilder
let re = Regex {
"#"
Capture { /[0-9a-fA-F]{6}/ }
}
if let m = "#FF8800".wholeMatch(of: re) {
print("Hex: \(m.1)")
}Verifica rapida
Quale componente di RegexBuilder corrisponde a una o più occorrenze di un elemento?
Riepilogo
La DSL RegexBuilder costruisce regex dal codice Swift con Regex { }, usando OneOrMore, Optionally, Capture con trasformazioni, classi di caratteri e ancore. Rende i pattern complessi leggibili e sicuri rispetto ai tipi. Successivamente modificherà il testo sostituendolo e suddividendolo.
Domande Frequenti
La lezione «DSL RegexBuilder» è gratuita?
Sì — il testo completo di «DSL RegexBuilder» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.
Cosa imparerò in «DSL RegexBuilder»?
Componi regex con un builder leggibile. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «DSL RegexBuilder»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Letterali regex e pattern matching
- Gruppi di cattura
- DSL RegexBuilder
- Sostituzione e suddivisione del testo