Как извлечь подстроку из основной строки, начиная с действительного uuid, используя lua - PullRequest
1 голос
/ 17 июня 2020

У меня есть основная строка, как показано ниже: "/tmp/xjtscpdownload/7eb17cc6-b3c9-4ebd-945b-c0e0656a33f0/output/9999.317528060546245771146821638997525068657/"

Из основной строки нужно извлечь подстроку, начиная с подстроки. uuid part

"/7eb17cc6-b3c9-4ebd-945b-c0e0656a33f0/output/9999.317528060546245771146821638997525068657/"

Я пробовал string.match("/tmp/xjtscpdownload/7eb17cc6-b3c9-4ebd-945b-c0e0656a33f0/output/9999.317528060546245771146821638997525068657/", "/[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[ a-fA-F0-9] {4} - [a-fA-F0-9] {4} - [a-fA-F0-9] {12} / (.) / (.) / $ "

Но нет.

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Попробуйте также код

s="/tmp/xjtscpdownload/7eb17cc6-b3c9-4ebd-945b-c0e0656a33f0/output/9999.317528060546245771146821638997525068657/"

print(s:match("/.-/.-(/.+)$"))

Он пропускает первые два «поля», используя нежадное соответствие.

1 голос
/ 17 июня 2020

, если вы хотите получить

"/7eb17cc6-b3c9-4ebd-945b-c0e0656a33f0/output/9999.317528060546245771146821638997525068657/"

из

"/tmp/xjtscpdownload/7eb17cc6-b3c9-4ebd-945b-c0e0656a33f0/output/9999.317528060546245771146821638997525068657/"

или, скажем, 7eb17cc6-b3c9-4ebd-945b-c0e0656a33f0, output и 9999.317528060546245771146821638997525068657, как это что предлагает ваша попытка шаблона. В противном случае оставьте круглые скобки в следующем решении.

Вы можете использовать такой шаблон:

local text = "/tmp/xjtscpdownload/7eb17cc6-b3c9-4ebd-945b-c0e0656a33f0/output/9999.317528060546245771146821638997525068657/"

print(text:match("/([%x%-]+)/([^/]+)/([^/]+)"))

"/([^/]+)/" захватывает хотя бы один не-SLA sh -символ между двумя косые черты.

При вашей попытке:

Вы не можете указывать такие числа, как {4} в строковом шаблоне.

Вам нужно избежать - с %, так как это магический символ c.

(.) захватит только один символ.

Прочтите Lua руководство , чтобы выясните, что вы сделали не так и как правильно использовать строковые шаблоны.

...