Настоящие регулярные выражения: match, find, replace.Lua-паттерны (string.find, string.match, string.gsub) годятся для
простых случаев, но не умеют альтернативу (a|b), нежадные квантификаторы
или группы с квантификатором. regex — обычные регулярки поверх
стандартной библиотеки C++ (std::regex, синтаксис ECMAScript — тот же,
что в JavaScript/PCRE): без нового вендоренного движка, без 32-битной
сборки под него.
Скомпилированный паттерн кешируется по тексту (первый вызов с новым
паттерном платит за компиляцию, повторные — нет). Плохой паттерн — ошибка
Lua при первом использовании, а не тихий nil.
local year, month, day = regex.match("2026-08-19", "(\\d+)-(\\d+)-(\\d+)")if regex.match(name, "^[A-Za-z0-9_]+$") then -- имя годится: только буквы, цифры, подчёркиваниеend
Та же форма, что у string.match: с группами — значения групп, без групп —
всё совпадение целиком.
Синтаксис ECMAScript, не Lua-паттерны: \d вместо %d, \w вместо %w и
т.д. В Lua-строке экранируй бэкслеш: "\\d+", а не "\d+" — иначе
получится управляющая последовательность строки, а не буквальный
бэкслеш+d.