使用 string.gmatch 匹配字符串中的标记的正则表达式
2016-6-20 15:31:34
收藏:0
阅读:107
评论:2
我需要一个正则表达式来在 string.gmatch 中使用,匹配由字母数字字符和非字母数字字符(引号、括号、冒号等)分隔单独匹配的序列,如下所示:
str = [[
function test(arg1, arg2) {
dosomething(0x12f, "String");
}
]]
for token in str:gmatch(regex) do
print(token)
end
应该输出:
function
test
(
arg1
,
arg2
)
{
dosomething
(
0x121f
,
"
String
"
)
;
}
我该怎么做?在标准正则表达式中,我发现 ([a-zA-Z0-9]+)|([\{\}\(\)\";,]) 对我有用,但我不确定如何将其转换为 Lua 的正则表达式。
点赞
用户1847592
local str = [[
function test(arg1, arg2) {
dosomething(0x12f, "String");
}
]]
for p, w in str:gmatch"(%p?)(%w*)" do
if p ~= "" then print(p) end
if w ~= "" then print(w) end
end
本地的 str 变量存储了一段代码,将其作为多行字符串存储。
使用 gmatch 函数将字符串中的标点和单词提取出来并打印。
2016-06-20 16:03:46
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
你需要一个解决方法,其中涉及一个在你的代码中没有使用的临时字符。例如,使用
§将其插入字母数字和非字母数字字符之后:str = str:gsub("%s*(%w+)%s*", "%1§") --修剪1个或多个字母数字字符块,并在其后添加临时字符 str = str:gsub("(%W)%s*", "%1§") --逐个修剪非字母数字字符,并在每个字符后添加临时字符 for token in str:gmatch("[^§]+") do --匹配除临时字符之外的字符块 print(token) end参见Lua演示
注意,在Lua中
%w相当于 JS 中的[a-zA-Z0-9],因为它不匹配下划线_。