Korzystanie z wyrażeń regularnych

Lua:
Korzystanie z wyrażeń regularnych

Jak to zrobić:

Lua nie obsługuje natywnie wyrażeń regularnych w ten sam sposób co języki takie jak Perl czy Python. Zamiast tego oferuje możliwości dopasowywania wzorców, które pokrywają wiele powszechnych przypadków użycia wyrażeń regularnych. Jednakże, w przypadku potrzeby pełnoprawnego wsparcia wyrażeń regularnych, można użyć biblioteki firm trzecich, takiej jak lrexlib.

Podstawowe dopasowywanie wzorców w Lua:

Lua zapewnia potężny system dopasowywania wzorców, którego możesz użyć do prostych zamienników i wyszukiwań:

-- Proste wyszukiwanie
local str = "Hello, World!"
if string.find(str, "World") then
  print("Znaleziono dopasowanie!")
end
-- Wynik: Znaleziono dopasowanie!

-- Prosta zamiana
local s = string.gsub("Lua jest świetna!", "świetna", "niesamowita")
print(s)
-- Wynik: Lua jest niesamowita!

Przechwytywanie podciągów:

Możesz przechwycić części ciągu, które pasują do wzorców:

local date = "Dzisiaj jest 17/05/2023."
local d, m, y = string.match(date, "(%d+)/(%d+)/(%d+)")
print("Dzień:", d, "Miesiąc:", m, "Rok:", y)
-- Wynik: Dzień: 17 Miesiąc: 05 Rok: 2023

Użycie lrexlib do wyrażeń regularnych:

Aby użyć rzeczywistych wyrażeń regularnych, możesz zainstalować i użyć lrexlib. Zakładając, że masz to zainstalowane (luarocks install lrexlib-pcre), możesz wykonać bardziej złożone dopasowywanie wzorców:

local rex = require 'rex_pcre'

local text = "Deszcz w Hiszpanii pada głównie na równinach."
local regex = "\\bS\\w+"
local count, err = rex.gsub(text, regex, function(w)
  return w:upper()
end)
if err then
  print("Błąd:", err)
else
  print("Zmodyfikowany tekst:", text)
  print("Dokonane zamiany:", count)
end
-- Przykładowy wynik: Zmodyfikowany tekst: Deszcz w Hiszpanii pada głównie na równinach.
-- Dokonane zamiany: 3

Powyższe przykłady ilustrują podstawowe użycie systemu dopasowywania wzorców w Lua i jak wykorzystać moc wyrażeń regularnych za pomocą lrexlib. Niezależnie od tego, czy wykonujesz proste manipulacje ciągami znaków, czy wymagasz pełnej wszechstronności wyrażeń regularnych, Lua w połączeniu z potężnymi bibliotekami może zaspokoić Twoje potrzeby.