function getXMLBaseFileName(filename) try = filename:match("^(.+)\.xml$") if try == nil then return filename else return try end end
Когда дано имя файла, например «foo. xml», я верну «foo.» так что включая точку, но это вне пары ().
Опубликованный вами код не компилируется, потому что \. не является допустимой Lua строковой escape-последовательностью. Вы неправильно пытаетесь экранировать символ .; вам нужно использовать шаблон escape, а не Lua string escape. В частности, "^(.+)%.xml$". Как только вы это сделаете, ваш код будет работать нормально.
\.
.
"^(.+)%.xml$"
function getXMLBaseFileName(filename) return (filename:gsub("%.xml$", "")) -- www.lua.org/manual/5.3/manual.html#pdf-string.gsub end print(getXMLBaseFileName('foo.xml'))
:)