我正在编写一个脚本来自动化我的makefile的保护。我需要一个与以下行匹配的Lua模式:
# objects {
objects = build/somefile1.o \
build/somefile2.o \
...
build/somefileN.o \
# } objects
我尝试使用%# objects %{[a-z%.%s%/%\\]+%# %} objects
,但似乎无效。
答案 0 :(得分:4)
我建议使用:
"\n(# objects %b{} objects)"
要使其适用于匹配位于字符串开头的情况,您需要在字符串输入前添加换行符。在这里,首先匹配换行符,然后匹配# objects
,然后是空格,然后%b{}
匹配平衡嵌套花括号(如果有),然后匹配objects
。
运行提取时,捕获的部分((...)
内)将返回string.gmatch
。
s = [[ YOUR_TEXT_HERE ]]
for m in string.gmatch("\n" .. s, "\n(# objects %b{} objects)") do
print(m)
end