У меня есть строка, которая выглядит следующим образом:
local str = "rootFolder\\<subFolder>\\<...>\\nFolder\\fileName";
, где <...>
может быть списком других имен папок, что делает путь / строку очень длинным.Кроме того, я не знаю, как на самом деле будет вызываться <subFolder>
, поскольку имя папки может быть любым, например:
rootFolder\\folderA\\...
rootFolder\\folderB\\...
rootFolder\\folderC\\...
- ...
Можно предположить, что я знаю имя корневой папки, потому что оно будет известно во время выполнения, поэтому сейчас давайте предположим, что оно называется rootFolder
.
Как извлечь подстроку <subFolder>
, используя шаблон для сопоставления с str
?
Я думал о чем-то вроде:
string.match(str, "rootFolder\\(.*)\\.*");
чтобы захватить первое имя_папки в rootFolder в иерархии папок / каталогов и игнорировать все остальное, что следует за ним, но это не работает, потому что, хотя оно действительно совпадает, оно также получает все остальное, что следует за ним, а не только ту часть, которая мне нужна (Я также попытался использовать .+
вместо .*
).
Например, я хочу быть в состоянии сделать это:
local str = "rootFolder\\hello\\anotherFolder\\myFile";
-- this pattern does not work as expected:
local folderName = string.match(str, "rootFolder\\(.*)\\.*");
print(folderName == "hello"); -- true
Надеюсь, что имеет смысл.Спасибо.