2016-12-30 74 views
3

我正在編寫一個腳本來自動化我的makefile的守護進程。我需要的是以下行相匹配的Lua的模式:Lua正則表達式匹配makefile中的模式

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

# } objects 

我試着用%# objects %{[a-z%.%s%/%\\]+%# %} objects但似乎並沒有工作。

+2

'#對象{.- \ N#} objects' –

回答

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