我有一个字符串x:x = "{abc}{def}{ghi}"
我需要在第二个{
和第二个}
之间打印字符串,在本例中为def
。如何在不知道字符串长度的情况下执行此操作?例如,字符串x也可以是{abcde}{fghij}{klmno}"
答案 0 :(得分:3)
这是模式匹配很有用的地方:
local x = "{abc}{def}{ghi}"
local result = x:match(".-{.-}.-{(.-)}")
print(result)
.-
匹配零个或多个字符,非贪婪。整个模式.-{.-}.-{(.-)}
捕获第二个{
和第二个}
之间的内容。
答案 1 :(得分:2)
另请尝试x:match(".-}{(.-)}")
,这更简单。
答案 2 :(得分:2)
我会以不同的方式解决这个问题:
local i, x, result = 1, "{abc}{def}{ghi}"
for w in x:gmatch '{(.-)}' do
if i == 2 then
result = w
break
else
i = i + 1
end
end
print( result )