我正在使用Lua,已经使用过Google并且什么也没有找到方法来获取不等号之间的字符串(<>)。其他括号很容易得到,但这些不是。有可能吗?string.gmatch找到两个不等号之间包含的字符串
目标:如何在字符串之间抓取“名称”不等号?
字符串:<名>:消息
我正在使用Lua,已经使用过Google并且什么也没有找到方法来获取不等号之间的字符串(<>)。其他括号很容易得到,但这些不是。有可能吗?string.gmatch找到两个不等号之间包含的字符串
目标:如何在字符串之间抓取“名称”不等号?
字符串:<名>:消息
如果name
没有串包含>
,然后<(.-)>
工作。
可以使用(%b<>)
模式捕捉匹配<>
。然后使用该值,你可以简单地使用string.sub
切断第一和最后一个字符:
name,message=('< name<> > : Foo Bar!'):match('(%b<>)%s*:%s*(.*)')
name=name:sub(2,-2)
print(name,'sent message :',message)
正如你所看到的,这也需要照顾含有其他嵌入式<>
迹象
不能做类似'pattern =“<(.*)>:(。*)”'?然后'为名称,在string.gmatch(文本,模式)中的消息做' – user1112008 2012-01-02 12:35:13
你可以添加你想要的任何模式,我给了。我更新了我的答案以符合消息。 – jpjacobs 2012-01-02 12:51:16