Lua - Получить первое вхождение подстроки, используя шаблон - PullRequest
0 голосов
/ 20 января 2019

У меня есть строка, которая выглядит следующим образом:

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

Надеюсь, что имеет смысл.Спасибо.

1 Ответ

0 голосов
/ 20 января 2019

Ответ должен был использовать минус:

local folderName = string.match(str, "rootFolder\\(.-)\\");

...