string.gmatch查找包含在两个符号之间的字符串

string.gmatch查找包含在两个符号之间的字符串,string,lua,expression,String,Lua,Expression,我用的是Lua,已经用过谷歌了,什么都没有,找不到方法来获取不平等符号之间的字符串()。其他括号很容易得到,但这些不是。有可能吗 目标:如何从符号之间的字符串中获取“名称” 字符串::Message您可以使用(%b)模式捕获匹配的。然后使用该值,您只需使用string.sub来切断第一个和最后一个字符: name,message=('< name<> > : Foo Bar!'):match('(%b<>)%s*:%s*(.*)') name=name:sub

我用的是Lua,已经用过谷歌了,什么都没有,找不到方法来获取不平等符号之间的字符串(<>)。其他括号很容易得到,但这些不是。有可能吗

目标:如何从符号之间的字符串中获取“名称”

字符串::Message

您可以使用
(%b)
模式捕获匹配的
。然后使用该值,您只需使用
string.sub
来切断第一个和最后一个字符:

name,message=('< name<> > : Foo Bar!'):match('(%b<>)%s*:%s*(.*)')
name=name:sub(2,-2)
print(name,'sent message :',message)
name,message=(“:Foo Bar!”):匹配(“(%b)%s*:%s*(*)”
名称=名称:子(2,-2)
打印(名称,“已发送邮件:”,邮件)

正如您所见,这也会处理包含其他嵌入的
符号的字符串

如果
名称
不包含
,则
有效。

不能执行类似
模式=“:(.*)”的操作。
?然后
对于name,message in string.gmatch(text,pattern)do
您可以在我提供的模式中添加任何您想要的内容。我更新了我的答案,使之与信息相符。