Lua 匹配 makefile 中模式的正则表达式

Lua regex to match pattern in makefile

我正在编写一个脚本来自动维护我的 makefile。我需要一个匹配以下行的 Lua 模式:

# objects {
objects = build/somefile1.o \
          build/somefile2.o \
          ...
          build/somefileN.o \

# } objects

我试过 %# objects %{[a-z%.%s%/%\]+%# %} objects 但它似乎不起作用。

我建议使用:

"\n(# objects %b{} objects)"

要使其适用于匹配位于字符串开头的情况,您需要在字符串输入前加上换行符。这里首先匹配一个换行符,然后是# objects,然后是space,然后%b{}匹配平衡嵌套花括号(如果有的话),然后匹配objects

当运行提取时,捕获的部分(在(...)内)将返回string.gmatch

Lua online demo

s = [[ YOUR_TEXT_HERE ]]
for m in string.gmatch("\n" .. s, "\n(# objects %b{} objects)") do
   print(m)
 end