匹配Lua中没有用引号括起来的单词

时间:2017-05-10 15:57:13

标签: lua lua-patterns

(抱歉我的英语不好)
我正在尝试匹配字符串中的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 中执行此操作

1 个答案:

答案 0 :(得分:2)

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

这假定or始终出现在带引号的字符串之后。它会捕获从引用的字符串到or之前的所有内容,并根据需要将其替换为捕获的文本,后跟-