local code = [[
print("this is a trap")
asd("XDasdsadasdasd")
print("this is a trap")
]]
print("\n\n\n\n\n")
print(string.match(code, 'asd(.*)'))
Я сделал это, но проблема в том, что он также возвращает печать под ним. Он вернет что-нибудь под asd("XDasdsadasdasd"), но я хочу, чтобы внутри asd("XDasdsadasdasd") возвращалось только "XDasdsadasdasd"
Круглые скобки — это магические символы в шаблонах Lua. Вам нужно убежать от них. Кроме того, вам нужно остановиться на первой закрывающей скобке. См. код ниже:
print(string.match(code, 'asd%(.-%)'))
Если вам нужно только то, что внутри asd(...)
, то используйте
print(string.match(code, 'asd%((.-)%)'))
Как бы это было, если бы их было больше одного local code = [[ asd("one") print("bait") asd("twio") ]]
, потому что я считаю, что нужно только первое
@Birk, используй цикл с string.gmatch
.
@lhf Не лучше ли использовать %b()
?
@Spar, возможно, но если строка может содержать скобки, то ни мое решение, ни ваше не работают.
@lhf Есть ли более правильный способ? %(%)
против %b()
прочитайте lua.org/manual/5.4/manual.html#6.4.1 круглые скобки определяют захват, если он не экранирован с помощью
%