Manipularea Șirurilor și Pattern Matching în Lua: string.find, match, gsub în Lua

Ghid complet pentru biblioteca string în Lua: potrivirea modelelor (Pattern Matching) fără motor greoi RegEx, extragerea cu string.match și înlocuirea cu string.gsub.

Sintaxă
string.match(text, "(%d+)%s+(%a+)"); string.gsub(text, pattern, repl)

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