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

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

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

# } objects

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

点赞
用户3832970
用户3832970

为了让其适用于字符串匹配在字符串开头的情况下,需要在与字符串输入之前加上一个换行符。这里,首先匹配一个换行符,然后匹配 # objects,再匹配一个空格,之后 %b{} 匹配均衡的嵌套花括号(如果有的话),最后匹配 objects

在运行提取时,被捕获的部分(位于 (...) 中)将由 string.gmatch 返回。

请参见 Lua 在线演示

s = [[ YOUR_TEXT_HERE ]]
for m in string.gmatch("\n" .. s, "\n(# objects %b{} objects)") do
   print(m)
 end
2016-12-30 07:26:03