(抱歉我的英语不好)
我正在尝试匹配字符串中的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 中执行此操作。
答案 0 :(得分:2)
尝试input:gsub("('.-'.-)or","%1-")
。
这假定or
始终出现在带引号的字符串之后。它会捕获从引用的字符串到or
之前的所有内容,并根据需要将其替换为捕获的文本,后跟-
。