DSL RegexBuilder
Tworzenie wyrażeń regularnych za pomocą czytelnego buildera.
DSL RegexBuilder to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
DSL RegexBuilder
Złożone literały wyrażeń regularnych stają się trudne do odczytania. Moduł RegexBuilder pozwala tworzyć wzorce z kodu Swift za pomocą DSL opartego na result builderze, z nazwanymi komponentami i typami.
Importowanie RegexBuilder
Należy zaimportować moduł, a następnie utworzyć Regex za pomocą buildera Regex { ... }. Każdy wiersz wewnątrz niego jest kolejną częścią wzorca.
import RegexBuilder
let re = Regex {
"ID-"
OneOrMore(.digit)
}
print("ID-42".contains(re))OneOrMore
OneOrMore(...) dopasowuje co najmniej jeden element danego komponentu i jest odpowiednikiem +. .digit to wbudowana klasa znaków.
import RegexBuilder
let number = Regex {
OneOrMore(.digit)
}
if let m = "abc789".firstMatch(of: number) {
print(m.0)
}ZeroOrMore i Optionally
ZeroOrMore oznacza *, a Optionally oznacza ?. Dzięki nim części wzorca mogą się powtarzać lub być pomijane.
import RegexBuilder
let re = Regex {
"color"
Optionally("u")
"r"
}
print("colour".wholeMatch(of: re) != nil)
print("color".wholeMatch(of: re) != nil)Capture
Capture { ... } tworzy grupę przechwytującą. Dopasowany podnapis pojawia się w krotce wynikowej, podobnie jak w przypadku nawiasów w literałach.
import RegexBuilder
let re = Regex {
"v"
Capture { OneOrMore(.digit) }
}
if let m = "v123".wholeMatch(of: re) {
print("Version: \(m.1)")
}Przekształcanie przechwyceń
Capture może zawierać domknięcie transformujące, które konwertuje dopasowany tekst na wartość określonego typu, dzięki czemu wynik ma już typ Int lub inny.
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
Użyj CharacterClass albo wbudowanych elementów, takich jak .word, .whitespace i zakresy, na przykład ("a"..."z"), aby określić dozwolone znaki.
import RegexBuilder
let re = Regex {
One(.word)
ZeroOrMore(("a"..."z"))
}
print("hello".contains(re))Kotwice w builderze
Dodaj Anchor.startOfLine i Anchor.endOfLine, aby definiować asercje pozycyjne wewnątrz buildera.
import RegexBuilder
let re = Regex {
Anchor.startOfLine
OneOrMore(.digit)
Anchor.endOfLine
}
print("100".wholeMatch(of: re) != nil)Komponenty wielokrotnego użytku
Podwzorce można przechowywać w zmiennych i składać z nich większe wzorce, dzięki czemu rozbudowane wyrażenia regularne są modularne i czytelne.
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])
}Wiele przechwyceń
Każdy element Capture dodaje kolejny element wyniku, dlatego parser daty udostępnia osobno rok, miesiąc i dzień.
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)")
}Wybór między DSL a literałem
Literałów należy używać dla krótkich wzorców, a DSL dla długich wzorców, które zyskują na nazwach, typach i transformacjach. Są wzajemnie zamienne i można je nawet zagnieżdżać.
import RegexBuilder
let re = Regex {
"#"
Capture { /[0-9a-fA-F]{6}/ }
}
if let m = "#FF8800".wholeMatch(of: re) {
print("Hex: \(m.1)")
}Szybkie sprawdzenie
Który komponent RegexBuilder dopasowuje co najmniej jedno wystąpienie elementu?
Podsumowanie
DSL RegexBuilder tworzy wyrażenia regularne z kodu Swift za pomocą Regex { }, wykorzystując OneOrMore, Optionally, Capture z transformacjami, klasy znaków i kotwice. Dzięki temu złożone wzorce są czytelne i bezpieczne typowo. Następnie tekst zostanie zmodyfikowany przez zastępowanie i dzielenie.
Często zadawane pytania
Czy lekcja „DSL RegexBuilder” jest bezpłatna?
Tak — pełny tekst „DSL RegexBuilder” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „DSL RegexBuilder”?
Tworzenie wyrażeń regularnych za pomocą czytelnego buildera. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „DSL RegexBuilder”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Literały wyrażeń regularnych i dopasowywanie
- Grupy przechwytujące
- DSL RegexBuilder
- Zastępowanie i dzielenie tekstu