0Pricing
Go Academy · Lekcja

Podstawy regexp

Kompiluj i dopasowuj wzorce

Podstawy regexp to bezpłatna lekcja Go 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 Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.

Czym jest wyrażenie regularne?

Wyrażenie regularne (regexp) to wzorzec opisujący zbiór ciągów znaków. Go udostępnia wyrażenia regularne za pośrednictwem pakietu regexp.

Doskonale nadają się do walidowania i wyszukiwania tekstu.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    matched, _ := regexp.MatchString("go+", "gooo")
    fmt.Println(matched)
}

Szybkie dopasowanie za pomocą MatchString

regexp.MatchString(pattern, s) informuje, czy wzorzec występuje w dowolnym miejscu ciągu s. Zwraca wartość typu bool oraz błąd.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    ok, _ := regexp.MatchString("cat", "the cat sat")
    fmt.Println(ok)
}

Kompilowanie wzorca

W przypadku wielokrotnego użycia należy skompilować wzorzec raz za pomocą regexp.Compile. Funkcja zwraca wielokrotnego użytku wartość typu *regexp.Regexp oraz błąd dla nieprawidłowych wzorców.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re, err := regexp.Compile("[0-9]+")
    fmt.Println(re.MatchString("abc123"), err)
}

MustCompile dla stałych

regexp.MustCompile powoduje panic, jeśli wzorzec jest nieprawidłowy. Należy używać go dla stałych wzorców znanych w czasie kompilacji, zwykle w zmiennych na poziomie pakietu.

package main

import (
    "fmt"
    "regexp"
)

var digits = regexp.MustCompile("[0-9]+")

func main() {
    fmt.Println(digits.MatchString("order 42"))
}

Klasy znaków

Nawiasy kwadratowe definiują zbiór dozwolonych znaków. [aeiou] dopasowuje dowolną samogłoskę, a zakresy takie jak [a-z] dopasowują określony przedział.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[a-z]+")
    fmt.Println(re.MatchString("Hello"))
}

Predefiniowane klasy

Skróty ułatwiają używanie często potrzebnych zbiorów: \d oznacza cyfrę, \w znak słowa, a \s biały znak. W ciągach Go należy stosować znak ucieczki dla ukośnika odwrotnego.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("\\d+")
    fmt.Println(re.MatchString("abc 99"))
}

Kwantyfikatory

Kwantyfikatory określają liczbę powtórzeń:

  • * zero lub więcej,
  • + jeden lub więcej,
  • ? zero lub jeden,
  • {2,4} określony zakres.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("a{2,3}")
    fmt.Println(re.MatchString("aaa"))
    fmt.Println(re.MatchString("a"))
}

Kotwice

Kotwice określają położenie dopasowania: ^ oznacza początek tekstu, a $ — jego koniec. Należy użyć obu, aby wymagać dopasowania całego ciągu.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("^go$")
    fmt.Println(re.MatchString("go"))
    fmt.Println(re.MatchString("going"))
}

Alternatywa i grupy

Pionowa kreska | oznacza OR, a nawiasy grupują elementy. (cat|dog)s? dopasowuje cat, cats, dog lub dogs.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(cat|dog)s?")
    fmt.Println(re.MatchString("dogs"))
}

Walidowanie formatu

Wzorce z kotwicami pozwalają tworzyć walidatory. W tym przykładzie sprawdzamy prosty kod w stylu kodu pocztowego, składający się dokładnie z pięciu cyfr.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("^\\d{5}$")
    fmt.Println(re.MatchString("12345"))
    fmt.Println(re.MatchString("123"))
}

Dopasowanie do bajtów

Metody występują w wersjach dla ciągów znaków i wycinków bajtów. Match działa na wartości []byte, podobnie jak MatchString.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.Match([]byte("id7")))
}

Szybkie sprawdzenie

Która funkcja powoduje panic dla nieprawidłowego wzorca i najlepiej nadaje się do stałych wzorców?

Podsumowanie: podstawy regexp

Poznano podstawy:

  • Szybkie dopasowanie wykonuje się za pomocą MatchString, a kompilowanie — za pomocą Compile lub MustCompile.
  • Wzorce buduje się z klas, kwantyfikatorów, kotwic i grup.
  • Do walidowania całego ciągu należy używać kotwic ^ i $.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("^[a-z]+@[a-z]+$")
    fmt.Println(re.MatchString("hi@host"))
}

Często zadawane pytania

Czy lekcja „Podstawy regexp” jest bezpłatna?

Tak — pełny tekst „Podstawy regexp” 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 Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Podstawy regexp”?

Kompiluj i dopasowuj wzorce Ćwiczysz Go 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ąć Go Academy?

Nie wymagamy żadnego doświadczenia. Go 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 „Podstawy regexp”?

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 Go Academy?

Tak. Każda lekcja Go 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. Podstawy regexp
  2. Wyszukiwanie i wyodrębnianie
  3. Zastępowanie tekstu
  4. Wskazówki dotyczące wydajności
← Powrót do Go Academy