Lua - 使用模式匹配获取子字符串的第一次出现

我有一个看起来像这样的字符串:

local str = "rootFolder\\<subFolder>\\<...>\\nFolder\\fileName";

其中<...>可能是其他文件夹名称的列表,使路径/字符串变得非常长。 此外,我不知道<subFolder>实际上将被称为什么,因为文件夹名称可以是任何东西,即:

  • rootFolder\\folderA\\...
  • rootFolder\\folderB\\...
  • rootFolder\\folderC\\...
  • ...

我们可以假设我知道根文件夹的名称,因为这将在运行时已知,因此现在假设它被称为rootFolder

如何使用模式匹配从str中提取子字符串<subFolder>

我想的是像这样的东西:

string.match(str, "rootFolder\\(.*)\\.*");以捕获文件夹/目录层次结构中根文件夹下的第一个folderName并忽略其后的任何内容,但这不起作用,因为尽管它确实匹配,但它也得到了跟随它的其他所有内容,而不仅仅是我需要的一部分(我也尝试使用.+而不是.*)。

例如,我想能够这样做:

local str = "rootFolder\\hello\\anotherFolder\\myFile";
--此模式不按预期工作:
local folderName = string.match(str, "rootFolder\\(.*)\\.*");
print(folderName == "hello");--true

希望这有意义。谢谢。

点赞
用户3379140
用户3379140

答案是使用减号:

local folderName = string.match(str, "rootFolder\\(.-)\\");
2019-01-20 14:27:04