2016-12-30 4 views
3

私のmakefileのmantainmentを自動化するスクリプトを書いています。Makefileのパターンにマッチするルア正規表現

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

# } objects 

私は%# objects %{[a-z%.%s%/%\\]+%# %} objectsと試みたが、動作していないよう:私は次の行に一致するLuaのパターンを必要としています。

+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