String 如何捕获括号之间的字符串?

String 如何捕获括号之间的字符串?,string,lua,string-matching,lua-patterns,String,Lua,String Matching,Lua Patterns,嗨!我想在括号中捕捉一个单词 我的代码应该打印“捕获”字符串 我得到了这个语法错误 当然,我可以找到括号的位置并使用string.sub函数 但我更喜欢简单的代码 另外,括号给了我一个类似的错误。Lua模式中的转义字符是%,而不是\。所以用这个: lua: /home/casey/Desktop/test.lua:3: invalid escape sequence near '\(' 如果只需要一个匹配,则不需要gmatch循环 要捕获方括号中的字符串,请使用类似的模式: word=str:

嗨!我想在括号中捕捉一个单词

我的代码应该打印“捕获”字符串

我得到了这个语法错误

当然,我可以找到括号的位置并使用string.sub函数

但我更喜欢简单的代码


另外,括号给了我一个类似的错误。

Lua模式中的转义字符是
%
,而不是
\
。所以用这个:

lua: /home/casey/Desktop/test.lua:3: invalid escape sequence near '\('
如果只需要一个匹配,则不需要
gmatch
循环

要捕获方括号中的字符串,请使用类似的模式:

word=str:match("%((%a+)%)")

如果捕获的字符串不完全由字母组成,请使用
-
而不是
%a+

lhf的答案可能会满足您的需要,但我想再提一个我认为未充分使用的选项,它也可能适合您。使用
%((%a+))
的一个问题是,它不适用于嵌套的括号:如果将它应用于类似“(text(more)text)”的内容,您将获得“more”,即使您可能期望“text(more)text”。请注意,您无法通过要求匹配第一个右括号(
%([^%)]+)%
)来修复它,因为它将为您提供“文本(更多)”


但是,您可以使用,它平衡出现的
x
y
,并在这种情况下返回
(文本(更多)文本)
(您需要使用类似
(%b())
的内容来捕获它)。再说一次,这对您的案例来说可能有点过头了,但要记住这一点很有用,可能会帮助遇到此问题的其他人。

谢谢您提供更多信息。而且您的Lua IDE非常棒!
word=str:match("%((%a+)%)")
word=str:match("%[(%a+)%]")