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ż:
- Programming in Lua (4th edition) - oficjalny przewodnik po języku Lua.
- Lua 5.4 Reference Manual - dokumentacja wzorców w Lua.