-- Работа с регулярными выражениями осуществляется модулем string date = "04/19/64" m, d, y = string.match(date, "(%d+)/(%d+)/(%d+)") -- %d matches a digit (123) string.match("foo 123 bar", '%d%d%d') -- %u matches an uppercase letter (U) string.match("text with an Uppercase letter", '%u') -- Глобальный поиск по шаблону string.gmatch(s, pattern) Пример 1 -- Проход по всем словам s = "hello world from Lua" for w in string.gmatch(s, "%a+") do print(w) end Пример 2 -- Сбор пар "ключ-значение" t = {} s = "from=world, to=Lua" for k, v in string.gmatch(s, "(%w+)=(%w+)") do t[k] = v end Замены на основе регулярных выражений -- Возвращает копию s в которой все вхождения pattern заменяются на replace -- где replace - строка, таблица или функция -- возвращает как второе значение - общеее количество проведенных подстановок string.gsub (s, pattern, replace [, n]) Примеры: x = string.gsub("hello world", "(%w+)", "%1 %1") --> x="hello hello world world" x = string.gsub("hello world", "%w+", "%0 %0", 1) --> x="hello hello world" x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1") --> x="world hello Lua from" x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv) --> x="home = /home/roberto, user = roberto" x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s) return loadstring(s)() end) --> x="4+5 = 9" local t = {name="lua", version="5.1"} x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t) --> x="lua-5.1.tar.gz"
Lua Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor