为什么这个 lua 模式匹配不删除 '.xml' 包括 .?

gct*_*wnl 1 lua lua-patterns

function getXMLBaseFileName(filename)
  try = filename:match("^(.+)\.xml$")
  if try == nil then
      return filename
  else
      return try
  end
end
Run Code Online (Sandbox Code Playgroud)

当给定一个像“foo.xml”这样的文件名时,我将返回“foo”。所以包括点,但它在 () 对之外。

Nic*_*las 5

您发布的代码无法编译,因为\.它不是有效的 Lua 字符串转义序列。您试图.错误地转义字符;您需要使用模式转义,而不是 Lua 字符串转义。具体来说,"^(.+)%.xml$"。一旦你这样做了,你的代码就可以正常工作了。