如何在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
相关产品推荐
相关产品推荐

