提取引号里的内容写 ".*"——星号是贪婪量词,一路吞到行内收尾的引号才停;两段引号文本被一次匹配吃穿。非贪婪的 "-" 才是"到最近的引号为止"。错误场景:
local s = '他说:"来了",她答:"马上"'
print(string.match(s, '"(.*)"'))
输出 来了",她答:"马上——贪婪的 .* 吞到收尾的引号,两段内容被一口吃穿。
非贪婪的 "-" 让匹配在最短处停下。规范写法。示例代码如下:
local s = '他说:"来了",她答:"马上"'
print(string.match(s, '"(.-)"'))
输出 来了——遇到第一个结束引号即停,两段内容可分别提取。
三步验证:贪婪版复现吞穿现象;非贪婪版精确取到第一段;用 gmatch 配非贪婪模式循环提取全部引号内容——"来了"与"马上"逐个到手。
三种量词的属性记牢:* 与 + 贪婪、- 非贪婪。配对标签提取是非贪婪的标配场景。示例代码如下:
local s = "<b>粗体</b><b>斜体</b>"
for content in string.gmatch(s, "<b>(.-)</b>") do
print(content)
end
输出 粗体 与 斜体——非贪婪捕获是成对标签提取的标准写法。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法】 一、隐蔽陷阱 打印 5 层星号金字塔,每层比上层多 2 颗星、左侧空格少 1 个——空格与星数的数量关系不清晰时,…
【游戏】 一、业务场景 帮会下午没活动,成员上线点个卯就走。狩猎场上线:每晚 8 点开门 30 分钟,场内刷固定猎物,猎杀计…
【游戏】 一、业务场景 帮战开打才发现帮会没有物资储备,临时收捐谁也不交。粮仓上线:平日捐粮入库记账,帮战期间按配给开仓领补…
【语法】 一、隐蔽陷阱 验证"任一整数的立方都能写成连续奇数之和"时,起点从 1 开始逐个试,n 稍大就长跑几百步还没对上—…
【游戏】 一、业务场景 帮会大厅一面空墙,有人提议留言,结果聊天区刷屏根本留不住。题字墙上线:花 100 帮贡刻一句题字永久…
【游戏】 一、业务场景 灯谜活动上线半小时谜底被解题工具全数搜出——谜面与谜底同放在一份客户端配置里,读表即得。服务端重构:…