2009-09-15 42 views
0

我正在lua工作,我需要匹配通過文件IO接收的兩行部分。我對正則表達式沒有經驗,我被告知lua沒有內置完整的正則表達式支持(但是如果需要,我有一個庫提供)。有人可以幫助我構建正則表達式來匹配必要的部分嗎?正則表達式匹配一條線的兩個不同部分

"bor_adaptor_00.odf" 3.778 
     ^^^^^^^^^^^^^^  ^^^^^ 
     i need this in  and this in 
     a string   a number 
+0

看起來就像你基於兩個或多個空白字符分割,對不對?我不想污染答案,因爲我對Lua並不熟悉,但這似乎是您可以採取的一種方法。 – 2009-09-15 11:53:51

+0

你可以在安裝文件夾中的Lua文檔中檢查字符串庫,即file:///.../Lua/5.1/docs/luarefv51.html#The_string_library – 2009-09-15 11:58:38

回答

2
^"(.*?)"\s+(\d[\d.]*)$ 

說明:

  • ^=行開始
  • 「(*?)」= ...之間 「和」 保存一切於捕獲組
  • \ S + =任何數字> = 1的空格字符
  • (\ d [\ d。] *)=一個數字後跟多個數字或點
  • $ =行尾

不知道如何在lua中使用它,但應該幫助您開始。

另一方面,這是一個非常簡單的字符串,所以不用正則表達式就可以解析它。

+0

你說得對,我想我可以使用lua的工具只需將其解析爲數字和單詞,然後從那裏開始 – RCIX 2009-09-15 12:08:11

3

我做了一個例子:

s = '"bor_adaptor_00.odf" 3.778' 
val1, val2 = string.match(s,'(%b"")%s*([.0-9]*)') 
print(val1, val2) 

輸出:

"bor_adaptor_00.odf" 3.778