我有一个看起来像这样的字符串:
local str = "rootFolder\\<subFolder>\\<...>\\nFolder\\fileName";
其中<...>
可能是其他文件夹名称的列表,从而使路径/字符串很长。另外,我不知道实际上会调用什么<subFolder>
,因为文件夹名称可以是任何东西,即:
rootFolder\\folderA\\...
rootFolder\\folderB\\...
rootFolder\\folderC\\...
我们可以假设我知道根文件夹的名称,因为在运行时会知道它的名称,因此现在让我们假设它的名称为rootFolder
。
如何使用与<subFolder>
匹配的模式提取子字符串str
?
我在想类似的东西:
string.match(str, "rootFolder\\(.*)\\.*");
捕获文件夹/目录层次结构中rootFolder下的第一个folderName并忽略其后的其他任何内容,但这是行不通的,因为尽管它确实匹配,但它也获取了它之后的所有其他内容,但不只是我需要的部分(我也尝试使用.+
而不是.*
)。
例如,我希望能够做到这一点:
local str = "rootFolder\\hello\\anotherFolder\\myFile";
-- this pattern does not work as expected:
local folderName = string.match(str, "rootFolder\\(.*)\\.*");
print(folderName == "hello"); -- true
希望如此。谢谢。
答案 0 :(得分:1)
答案是使用减号:
local folderName = string.match(str, "rootFolder\\(.-)\\");