匹配 Lua 中未包含在引号中的单词
Match word which is not enclosed in quotes in Lua
(抱歉我的英语不好)
我正在尝试匹配字符串中的 or
,如果它未包含在单引号中,则将其替换为减号 (-
)。
例如:
local input1 = "'condition1' or 'condition2'"
input1:gsub(pattern, "-") --> Should return "'condition1' - 'condition2'"
local input2 = "'condition1 or condition2'" -- Note the position of the '
input2:gsub(pattern, "-") --> Should return "'condition1 or condition2'"
其中 pattern
是我要求的 Lua 模式。
我确定我必须使用 %b''
来检测 or
是否被引用,所以我尝试将此作为我的模式:[^%b'']or
但这对我不起作用。
请注意,我只能使用纯 Lua 库(所以不能使用 LPeg
),因为代码将在不支持 C 库的不同 Lua 运行时(所有 5.2)中运行.
并且请注意,这个问题不是重复的 - 没有问题询问如何做到这一点在Lua 有自己的模式。
尝试input:gsub("('.-'.-)or","%1-")
。
这假定 or
总是出现在带引号的字符串之后。它捕获从引用字符串到 or
之前的所有内容,并根据需要将其替换为捕获的文本,后跟 -
。
(抱歉我的英语不好)
我正在尝试匹配字符串中的 or
,如果它未包含在单引号中,则将其替换为减号 (-
)。
例如:
local input1 = "'condition1' or 'condition2'"
input1:gsub(pattern, "-") --> Should return "'condition1' - 'condition2'"
local input2 = "'condition1 or condition2'" -- Note the position of the '
input2:gsub(pattern, "-") --> Should return "'condition1 or condition2'"
其中 pattern
是我要求的 Lua 模式。
我确定我必须使用 %b''
来检测 or
是否被引用,所以我尝试将此作为我的模式:[^%b'']or
但这对我不起作用。
请注意,我只能使用纯 Lua 库(所以不能使用 LPeg
),因为代码将在不支持 C 库的不同 Lua 运行时(所有 5.2)中运行.
并且请注意,这个问题不是重复的 - 没有问题询问如何做到这一点在Lua 有自己的模式。
尝试input:gsub("('.-'.-)or","%1-")
。
这假定 or
总是出现在带引号的字符串之后。它捕获从引用字符串到 or
之前的所有内容,并根据需要将其替换为捕获的文本,后跟 -
。