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

如何在Lua中提取字符串末尾最后一个<...>内的内容?

解决方案

要提取字符串末尾最后一个<...>内的内容,可使用Lua的string.match配合锚定结尾的正则表达式,直接捕获目标内容,不符合条件时返回nil。

正确代码示例

-- 测试符合条件的字符串
local s = "<foo> <bar ... <baz.ind>"
local content = string.match(s, '.*<([^>]+)>$')
print(content)  -- 输出:baz.ind

-- 测试末尾无<...>的情况
s = "a b c"
content = string.match(s, '.*<([^>]+)>$')
print(content)  -- 输出:nil

s = "<a> b c"
content = string.match(s, '.*<([^>]+)>$')
print(content)  -- 输出:nil

正则表达式说明

  • .*:贪婪匹配字符串中最后一个<之前的所有内容,确保只定位到末尾的<...>结构
  • <:匹配左尖括号
  • ([^>]+):捕获组,匹配任意数量非>的字符,即需要提取的核心内容
  • >:匹配右尖括号
  • $:锚定字符串结尾,确保整个<...>结构位于字符串末尾

原代码问题分析

你之前使用的string.gmatch(s, '([^<]+)>')会遍历所有符合([^<]+)>规则的片段,因此会提取出所有<...>内的内容,而非仅末尾的那一个,无法满足需求。

内容的提问来源于stack exchange,提问作者Red-Cloud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:20:15