0Pricing
Swift Academy · Lekcja

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

  1. Literały wyrażeń regularnych i dopasowywanie
  2. Grupy przechwytujące
  3. DSL RegexBuilder
  4. Zastępowanie i dzielenie tekstu
← Powrót do Swift Academy