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

如何用正则按双竖线||分割Lua字符串(含单竖线场景)

解决Lua中按双竖线||分割字符串的正则问题

你使用的([^||]+)模式之所以失效,是因为[^||]属于字符类定义,它只会排除单个竖线|,而非双竖线序列||,因此会误将字符串中的单竖线当作分隔符。

在Lua的模式匹配体系中(Lua模式是简化版正则,足以解决此问题),可以利用非贪婪匹配来精准捕获两个||之间的内容(包括单个竖线)。正确的匹配模式为(.-)(%|%||$),其中:

  • .-是非贪婪匹配任意字符,会在遇到第一个||或字符串结尾时停止
  • (%|%||$)用于匹配分隔符||或者字符串结束位置

以下是具体实现代码:

local input_str = "value1=data1||value2=da|ta2||value3=test&user01|"
local result = {}

-- 遍历匹配结果,收集目标分段
for seg, _ in string.gmatch(input_str, "(.-)(%|%||$)") do
    table.insert(result, seg)
end

-- 打印验证结果
for _, v in ipairs(result) do
    print(v)
end

运行后将输出预期结果:

value1=data1
value2=da|ta2
value3=test&user01|

内容的提问来源于stack exchange,提问作者Sumeet Kumar Yadav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:01:23