查找字符串 w/o 的子字符串,知道字符串的长度

Find substring of string w/o knowing the length of string

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

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

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

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

之间的内容

也试试 x:match(".-}{(.-)}"),这样更简单。

我会以不同的方式处理它:

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 )