Literały wyrażeń regularnych i dopasowywanie
Dopasowywanie wzorców za pomocą typu Regex.
Literały wyrażeń regularnych i dopasowywanie to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 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.
Wyrażenia regularne w Swift
Swift 5.7+ obsługuje natywne wyrażenia regularne w bibliotece standardowej i Foundation. Wyrażenie regularne można zapisać jako literał między ukośnikami, na przykład /\d+/, a kompilator sprawdzi je podczas kompilacji.
Literał wyrażenia regularnego
Literał wyrażenia regularnego tworzy wartość Regex. Jej typ określa, co zwraca dopasowanie. Najprostszy wzorzec dopasowuje stałą sekwencję znaków.
let pattern = /hello/
if "hello world".contains(pattern) {
print("Found hello")
}wholeMatch(of:)
wholeMatch(of:) powiedzie się tylko wtedy, gdy wzorzec pasuje do całego napisu. Zwraca opcjonalne dopasowanie albo nil, jeśli cały napis nie pasuje.
let digits = /\d+/
if let m = "12345".wholeMatch(of: digits) {
print("Whole match: \(m.output)")
} else {
print("No whole match")
}firstMatch(of:)
firstMatch(of:) przeszukuje napis i zwraca pierwsze miejsce, w którym wzorzec pasuje do dowolnego fragmentu napisu.
let word = /\w+/
if let m = " swift rocks".firstMatch(of: word) {
print("First word: \(m.output)")
}Dostęp do zakresu dopasowania
Dopasowanie udostępnia range wskazujący fragment oryginalnego napisu, dzięki czemu wiadomo dokładnie, gdzie wystąpiło.
let text = "abc123def"
if let m = text.firstMatch(of: /\d+/) {
print("Matched: \(m.output)")
print("At: \(text[m.range])")
}Klasy znaków
Wewnątrz wzorca \d dopasowuje cyfrę, \w znak słowa, a \s biały znak. Nawiasy kwadratowe definiują niestandardowy zestaw, na przykład [aeiou].
let vowel = /[aeiou]/
if let m = "sky".firstMatch(of: vowel) {
print("Vowel: \(m.output)")
} else {
print("No vowels found")
}Kwantyfikatory
Kwantyfikatory określają powtórzenia: * oznacza zero lub więcej wystąpień, + jedno lub więcej, ? element opcjonalny, a {n,m} liczbę ograniczoną zakresem.
let phone = /\d{3}-\d{4}/
print("555-1234".wholeMatch(of: phone) != nil)
print("12-34".wholeMatch(of: phone) != nil)Kotwice
Użyj ^, aby zakotwiczyć dopasowanie na początku wiersza, oraz $ na jego końcu. Kotwice nie zużywają znaków; potwierdzają pozycję.
let startsWithCap = /^[A-Z]\w*/
if let m = "Swift".firstMatch(of: startsWithCap) {
print("Matched: \(m.output)")
}Dopasowanie bez uwzględniania wielkości liter
Wielkość liter można ignorować, dołączając .ignoresCase() do wartości wyrażenia regularnego. Jest to przydatne, gdy wielkość liter w danych wejściowych jest nieprzewidywalna.
let pattern = /swift/.ignoresCase()
print("I love SWIFT".contains(pattern))Dopasowywanie za pomocą matches(of:)
matches(of:) zwraca kolekcję wszystkich nienakładających się dopasowań w napisie, co pozwala iterować po każdym z nich.
let nums = "a1 b22 c333"
for m in nums.matches(of: /\d+/) {
print(m.output)
}Sprawdzanie poprawności danych wejściowych
Częstym zastosowaniem jest walidacja: należy utworzyć wzorzec dla pełnego oczekiwanego formatu i sprawdzić go za pomocą wholeMatch, które zwraca nil w przypadku niezgodności.
func isZip(_ s: String) -> Bool {
s.wholeMatch(of: /\d{5}/) != nil
}
print(isZip("90210"))
print(isZip("ABCDE"))Szybkie sprawdzenie
Jaka metoda powiedzie się tylko wtedy, gdy pasuje cały napis?
Podsumowanie
Poznano sposób zapisywania literałów wyrażeń regularnych za pomocą ukośników oraz dopasowywania przy użyciu wholeMatch(of:), firstMatch(of:) i matches(of:). Omówiono również klasy znaków, kwantyfikatory, kotwice i dopasowanie bez uwzględniania wielkości liter. Następnie dane zostaną wyodrębnione z dopasowań za pomocą grup przechwytujących.
Często zadawane pytania
Czy lekcja „Literały wyrażeń regularnych i dopasowywanie” jest bezpłatna?
Tak — pełny tekst „Literały wyrażeń regularnych i dopasowywanie” 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 „Literały wyrażeń regularnych i dopasowywanie”?
Dopasowywanie wzorców za pomocą typu Regex. Ć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 1 z 4.
Ile czasu zajmuje lekcja „Literały wyrażeń regularnych i dopasowywanie”?
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