0Pricing
Lua Academy · Lekcja

Przechwytywanie i string.match

Proszę wyodrębniać przechwycone grupy z ciągów znaków za pomocą string.match i przechwyceń ().

Przechwytywanie i string.match to bezpłatna lekcja Lua Academy na CoddyKit. To lekcja 2 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 Lua Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Lua Academy zawiera 4 lekcji w sumie.

Czym są przechwycenia

Przechwycenia to podwzorce ujęte w nawiasy we wzorcach Lua. Służą do wyodrębniania podciągów z dopasowanego tekstu.

string.match z przechwyceniami

Gdy wzorzec zawiera przechwycenia, string.match zwraca przechwycone podciągi zamiast całego dopasowania.

local date = "2025-01-15"
local y, m, d = date:match("(%d+)-(%d+)-(%d+)")
print(y, m, d)  -- 2025  01  15

Pojedyncze przechwycenie

Pojedyncze przechwycenie zwraca jedną wartość tekstową.

local s = "name: Alice"
local name = s:match("name: (%a+)")
print(name)  -- Alice

Wiele przechwyceń

Wiele przechwyceń jest zwracanych jako wiele wartości.

local pair = "key = value"
local k, v = pair:match("(%w+)%s*=%s*(%w+)")
print(k, v)  -- key  value

Przechwycenia pozycyjne ()

Puste przechwycenie () przechwytuje bieżącą pozycję w ciągu jako liczbę.

local s = "hello world"
local pos = s:match("()world")
print(pos)  -- 7 (position where world starts)

Opcjonalne przechwycenia

Aby przechwycić opcjonalny fragment, należy użyć ? za przechwytywaną grupą.

local s = "http://example.com"
local protocol, host = s:match("(https?)://([^/]+)")
print(protocol, host)  -- http  example.com

string.find z przechwyceniami

string.find z przechwyceniami zwraca kolejno początek, koniec, a następnie przechwycone podciągi.

local s = "phone: 555-1234"
local i, j, num = s:find("phone: (%d+-%d+)")
print(i, j, num)  -- 1  16  555-1234

Zagnieżdżone przechwycenia

Przechwycenia mogą być zagnieżdżane. Są numerowane od lewej do prawej według otwierających nawiasów.

local s = "2025-01-15"
local full, year = s:match("((%d%d%d%d)-%d%d-%d%d)")
print(full, year)  -- 2025-01-15  2025

Dobre praktyki dotyczące przechwyceń

Należy używać zmiennych o nazwach zgodnych z przyjętą konwencją, aby zwiększyć czytelność. Proszę unikać nadmiernego zagnieżdżania przechwyceń. Nieudane dopasowanie zwraca nil — przed użyciem przechwyceń należy zawsze sprawdzić wynik.

local result = s:match("(%d+)")
if result then print("found:", result)
else print("no match") end

Dopasowywanie adresów e-mail

Prosty wzorzec adresu e-mail (niezgodny ze standardem RFC) z przechwyceniami.

local email = "user@example.com"
local user, domain = email:match("([^@]+)@(.+)")
print(user, domain)  -- user  example.com

Tabela wszystkich dopasowań

Aby zebrać wszystkie dopasowania w tabeli, należy użyć string.gmatch (omówionego w następnej lekcji).

Pytanie o przechwycenia

Co zwraca "2025-01-15":match("(%d+)-(%d+)-(%d+)")?

Podsumowanie: przechwycenia i string.match

Przechwycenia wykorzystują wyl: () we wzorcach do wyodrębniania podciągów. string.match zwraca bezpośrednio przechwycone wartości. Puste () przechwytuje pozycje. Należy zawsze sprawdzać wyniki dopasowania pod kątem nil.

Często zadawane pytania

Czy lekcja „Przechwytywanie i string.match” jest bezpłatna?

Tak — pełny tekst „Przechwytywanie i string.match” 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 Lua Academy, przejdź na CoddyKit PRO. Kurs Lua Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Przechwytywanie i string.match”?

Proszę wyodrębniać przechwycone grupy z ciągów znaków za pomocą string.match i przechwyceń (). Ćwiczysz Lua 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ąć Lua Academy?

Nie wymagamy żadnego doświadczenia. Lua 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 2 z 4.

Ile czasu zajmuje lekcja „Przechwytywanie i string.match”?

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

Tak. Każda lekcja Lua 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. Składnia wzorców Lua
  2. Przechwytywanie i string.match
  3. string.gmatch do tokenizacji
  4. string.gsub do przekształceń
← Powrót do Lua Academy