Usuwanie znaków pasujących do wzorca

Lua:
Usuwanie znaków pasujących do wzorca

How to: - Jak to zrobić:

local text = "Kodowanie w Lua jest łatwe i przyjemne!"
local pattern = "%a+" -- Wzorzec do znalezienia liter

-- Usuwanie znaków pasujących do wzorca
local cleaned_text = text:gsub(pattern, "")
print(cleaned_text)  -- Wypisuje: "      !"

Wzorce można też dostosować, na przykład:

local text = "E-mail: [email protected], Telefon: +48 123 456 789"
local email_pattern = "[\%w%.]+@[\%w%.]+"
local phone_pattern = "%+%d%d%d%d%d%d%d%d%d%d%d"

-- Usuń adresy e-mail
local without_email = text:gsub(email_pattern, "")
print(without_email)  -- Wypisuje: ", Telefon: +48 123 456 789"

-- Usuń numery telefonów
local without_phone = text:gsub(phone_pattern, "")
print(without_phone)  -- Wypisuje: "E-mail: [email protected], Telefon: "

Deep Dive - Dokładna analiza:

Lua oferuje potężne narzędzia do manipulacji tekstami przez wzorce stylizowane na wyrażenia regularne. Wersje Lua od 5.1 do najnowszej wprowadzały różne udoskonalenia, ale podstawowa funkcjonalność pozostała stabilna.

Alternatywą dla string.gsub jest użycie funkcji string.match do znalezienia pasujących fragmentów, a następnie ich usunięcie - ale to bardziej karkołomne i mniej wydajne. Warto pamiętać, że wzorce Lua nie są tak rozbudowane jak w pełni rozwinięte wyrażenia regularne, znane na przykład z Perl.

Implementacja potraktowania wzorców w Lua różni się od typowych wyrażeń regularnych – na przykład znak % używany jest jako escape dla specjalnych znaków, zamiast bardziej powszechnego w wyrażeniach regularnych znaku \.

See Also - Zobacz również: