Lua Match Все после персонажа в строке

Я новичок в Lua и с трудом разбираюсь в сопоставлении с образцом. Я пытаюсь выяснить, как сопоставить все в строке после двоеточия, и поместить эту часть строки в переменную. Мне не повезло, когда я смотрю в Интернете, или, может быть, я просто не вижу этого. Так как бы я это сделал?

Например, скажем, у меня есть переменная с именем my_string это равно "hello:hi_there" или что-то типа того. Как я могу извлечь "hi_there" в другую переменную без изменения my_string?

Похоже, мне нужно использовать string.match(), но какой шаблон будет использоваться для достижения моей цели?

2 ответа

Решение

Вы можете добиться этого, сделав что-то вроде этого:

local my_string = "hello:hi_there"
local extracted = string.match(my_string, ":(.*)")
print(extracted)

Скобки делают захват образца, точка обозначает любой символ, а звезда говорит функции соответствия, что образец должен повторяться 0 или более раз. Начинается сопоставление на : и берет все до конца строки.

Потому что ты не хочешь :быть в подборке, я бы совместил string.find()а также string.sub()в следующей реализации:

      local string = "hello:hi_there"
beg, final = string.find(string, ":") # Returns the index
local new_string = string.sub(string, final + 1) # Takes the position after the colon 

Согласно документации , если вы оставили третий аргумент sub() пустым, по умолчанию он равен -1, поэтому он принимает всю оставшуюся строку.

Другие вопросы по тегам