Lua:return“{foo}{bar}”的内容

Lua: return content of "{foo}{bar}"

对于像 "{foo}{bar}" 这样的字符串有没有简单的

str = "{foo}{bar}"
first, second = str:gmatch(...)...

应该给 first="foo"second="bar"

问题是foo本身可以多一些括号,eg:

str = "{foo {baz}{bar}"

所以first = "foo {baz" bar部分只有字母数字字符,没有括号

您可以使用

first, second = str:match('{([^}]*)}%s*{([^}]*)}')

Lua demo online

str.match 函数将查找并 return 第一个匹配项,并且由于有两个捕获组,因此将 return 根据有效匹配项编辑两个值。

该模式表示:

  • { - 一个 { 字符
  • ([^}]*) - 第 1 组:除 }
  • 之外的任何 0+ 个字符
  • } - 一个 } 字符
  • %s* - 0+ 个空格(不是必需的,但是额外的)
  • {([^}]*)} - 同上,只是这里定义了一个Group 2。