Pentru a menține dimensiunea binarului extrem de redusă, Lua nu include un motor complet de expresii regulate POSIX/PCRE, ci un sistem propriu, compact și rapid numit Pattern Matching. Acesta utilizează caractere speciale precum %d (cifre), %a (litere), %s (spații) și paranteze rotunde pentru capturi.
Extragerea și înlocuirea datelor textuale cu biblioteca string
local jurnal = "Utilizator: ion_popescu, ID: 4082, Oras: Iasi"
-- 1. Extragerea de valori prin capturi (string.match):
local utilizator, id = string.match(jurnal, "Utilizator:%s*(%w+),%s*ID:%s*(%d+)")
print(string.format("Utilizator extras: %s (ID numeric: %s)", utilizator, id))
-- 2. Înlocuirea de șabloane prin string.gsub:
local textFormatat = string.gsub("Pretul este 100 lei si 200 euro", "(%d+)", "[%1 RON]")
print("Text modificat:", textFormatat)
-- Ieșire: "Pretul este [100 RON] lei si [200 RON] euro"
-- 3. Împărțirea unui text pe baza unui separator (iterație cu string.gmatch):
local listaCsv = "mar,para,piersica,strugure"
for fruct in string.gmatch(listaCsv, "([^,]+)") do
print("Fruct identificat:", fruct)
end