You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Lua中如何从字符串中提取符合特定格式的子串?

正确实现方案

完整可运行代码

local x = "define x = 2; output('Hello World')"
-- 提取完整的output('xxx')结构
x:gsub("output%(%b'')", function(match_str)
    print(match_str) -- 输出:output('Hello World')
end)

-- 如果需要单独提取括号内的字符串内容,使用带捕获组的模式
x:gsub("output%(%('(.-)'%)", function(content)
    print(content) -- 输出:Hello World
end)

用到的Lua模式匹配规则说明

  • Lua模式中特殊符号需要用%转义,(、)属于特殊字符,因此写作%(、%)匹配字面量括号
  • %bxy是平衡匹配语法,%b''表示匹配从单引号开始到对应结束单引号的所有内容,自动适配内部无嵌套引号的场景
  • .-代表非贪婪匹配,会匹配尽可能短的符合规则的字符序列,避免匹配到字符串后续其他引号内容
  • 如果需要同时支持单引号、双引号包裹的参数,使用下面的通用模式:
    x:gsub("output%(%(['\"])(.-)%1%)", function(quote, content)
        -- quote是匹配到的引号类型,content是括号内的文本
        print(content)
    end)
    

内容的提问来源于stack exchange,提问作者Johan Grip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:30:04