如何使用Lua的string.gsub函数提取字符串中指定括号内的内容?
Lua 提取字符串中指定内容的方法
针对你给出的字符串Fishing Lure(+100 Fishing Skill)(1 hour),要提取最后的“1 hour”,可以用以下方式实现:
用 string.match 提取(更直接)
string.match专门用于从字符串中匹配并提取内容,比gsub更适合这个场景:
local str = "Fishing Lure(+100 Fishing Skill)(1 hour)" local target = string.match(str, "%(([^%)]+)%)$") print(target) -- 输出:1 hour
模式%(([^%)]+)%)$的含义:
%(:匹配左括号(括号是Lua模式中的特殊字符,需用%转义)([^%)]+):捕获一个或多个不是右括号的字符,也就是括号内的目标内容%):匹配右括号$:锚定到字符串结尾,确保匹配的是最后一对括号
用 string.gsub 实现(按你的需求)
如果一定要用gsub,可以通过替换整个字符串为捕获的目标内容来达到提取效果:
local str = "Fishing Lure(+100 Fishing Skill)(1 hour)" local target = string.gsub(str, "^.*%(([^%)]+)%)$", "%1") print(target) -- 输出:1 hour
模式^.*%(([^%)]+)%)$的含义:
^.*:从字符串开头开始,贪婪匹配到最后一个左括号之前的所有内容- 后面的
%(([^%)]+)%)$和上面的含义一致,匹配最后一对括号及其内容 %1:将整个字符串替换为第一个捕获组的内容,也就是我们要的“1 hour”
内容的提问来源于stack exchange,提问作者user3204810
相关产品推荐
相关产品推荐

