Lua 5.4如何查找提取字符串中类HTML标签并移除指定标签内容
Lua 5.4 提取并移除指定类HTML标签块实现方案
Lua 5.4 原生字符串模式完全可以覆盖这个场景,不需要引入第三方解析库,核心是用非贪婪匹配符解决终止位置定位问题。
核心实现代码
-- 原始输入字符串 local input = "<NS>my_file_path.py</NS> <NS>count</NS> <NS>type: :model</NS> <TS>do some counting</TS>" -- 匹配规则:固定开头<NS>type: + 非贪婪匹配任意内容 + 固定闭合标签</NS> local match_rule = "<NS>type:.-</NS>" -- 提取目标标签及包裹内容 local target = string.match(input, match_rule) -- 从原字符串移除目标块,同时清理块前后残留的多余空格 local result = string.gsub(input, "%s*" .. match_rule .. "%s*", " ") -- 结果校验 print("提取到的目标内容:", target) print("移除目标后的字符串:", result)
关键逻辑说明
- 你疑惑的「如何将匹配终止位置设定在
</NS>处」,靠Lua模式中的.-语法实现:这是Lua原生支持的非贪婪匹配标识,会匹配尽可能短的字符序列,只要后续的</NS>匹配成功就立刻终止,不会越过当前闭合标签匹配到后面的其他内容。 - 匹配规则前后拼接的
%s*是为了清理移除标签后残留的多余空格,避免处理后的字符串出现连续空白;如果不需要自动清理空格,直接删除这部分匹配规则即可。 - 该方案仅适用于标签包裹内容为普通文本、无嵌套标签、无转义尖括号的场景,和你给出的示例数据结构完全适配;如果后续出现嵌套标签等复杂场景,再考虑引入轻量XML解析库即可。
运行输出结果
提取到的目标内容: <NS>type: :model</NS> 移除目标后的字符串: <NS>my_file_path.py</NS> <NS>count</NS> <TS>do some counting</TS>
内容的提问来源于stack exchange,提问作者noobmaster69
相关产品推荐
相关产品推荐

