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

时间:2016-12-30 07:10:23

标签: makefile lua pattern-matching lua-patterns

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

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

# } objects

我尝试使用%# objects %{[a-z%.%s%/%\\]+%# %} objects,但似乎无效。

1 个答案:

答案 0 :(得分:4)

我建议使用:

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

要使其适用于匹配位于字符串开头的情况,您需要在字符串输入前添加换行符。在这里,首先匹配换行符,然后匹配# objects,然后是空格,然后%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