Lua中未封闭引号的匹配单词

(对我的破英语感到抱歉)

我正在尝试在一个字符串中匹配一个未使用单引号括起来的 or,并用减号(-)替换它。 例如:

local input1 = "'condition1' or 'condition2'"
input1:gsub(pattern, "-")  --> 应该返回 "'condition1' - 'condition2'"

local input2 = "'condition1 or condition2'"  -- 注意 '
' 的位置
input2:gsub(pattern, "-")  --> 应该返回 "'condition1 or condition2'"

其中 pattern 是我要求的Lua模式。

我确信我必须使用 %b'' 来检测 or 是否被引用,所以我尝试将其作为我的模式:[^%b'']or 但这对我没有作用。

请注意,我只能使用纯Lua库(因此没有 LPeg)作为代码将在不支持C库的不同Lua运行时(所有5.2)中运行。

请注意,这个问题不是重复的 - 没有一个问题问如何用它自己的模式在Lua中完成这个任务。

点赞
用户107090
用户107090

尝试使用 input:gsub("('.-'.-)or","%1-")

这假设 or 总是出现在引用的字符串后面。它捕获从引用的字符串开始一直到 or 之前的所有内容,并用捕获的文本加上 - 进行替换,如所需。

2017-05-10 16:25:38