不知道字符串长度的情况下查找字符串的子串

我有一个字符串 xx = "{abc}{def}{ghi}"。我需要打印出第二个 { 和第二个 } 之间的字符串,即 def。我怎么能在不知道字符串长度的情况下做到这一点?例如,字符串 x 也可以是 {abcde}{fghij}{klmno}

点赞
用户1009479
用户1009479

这就是模式匹配很有用的地方:

local x = "{abc}{def}{ghi}"
local result = x:match(".-{.-}.-{(.-)}")
print(result)

.- 匹配零个或多个字符,非贪婪模式。整个模式 .-{.-}.-{(.-)} 捕获第二个 { 和第二个 } 之间的内容。

2015-03-29 02:01:45
用户107090
用户107090

尝试使用x:match(".-}{(.-)}"),这是更简单的方法。

2015-03-29 02:28:02
用户1190388
用户1190388

我会用不同的方法处理:

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 )
2015-03-29 08:14:13