将量词应用于 Lua 模式中的句子

Applying quantifier to a sentence in Lua pattern

所以我尝试使用 Lua 模式从 C 文件中解析出 #define 语句,但在多行定义中存在这种情况,您可能会使用反斜杠转义换行符.

为了让我知道定义结束的位置,我需要能够将 backslash + linebreak 定义为单个字符,这样我就可以获得它的补码,然后使用 * 量词,然后计数直到第一个非转义换行符。

我该怎么做?

您不能简单地将所有出现的 "\\n" 替换为某个临时符号,因为在下面的示例中 "c\\\n" 行会出现问题。
相反,您应该为 C 源文件实现迷你扫描器:

local str = [[
#define x y
#define a b\
c\
d();
#define z
]]

-- Print all #defines found in the text
local line = ""
for char in str:gmatch"\?." do
   if char == "\n" then
      if line:sub(1, #"#define") == "#define" then
         print(line)
      end
      line = ""
   else
      line = line..char
   end
end

输出:

#define x y
#define a b\
c\
#define z