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, поэтому он принимает всю оставшуюся строку.