2011-01-19 40 views
0

需要幫助解析Lua中此行的數字。需要正則表達式來解析此行58.21 -13.73 57 -1

58.21 -13.73 57 -1 

我目前是這個:[1-9][0-9]我知道是不正確的,因爲它不返回負並不能處理小數。

感謝,

戴夫

+3

你使用什麼語言? – SilentGhost 2011-01-19 12:27:11

+1

解析你的意思是什麼? `。*`匹配這條線;-) – 2011-01-19 12:32:07

回答

2
s="58.21 -13.73 57 -1" 
for w in s:gmatch("%S+") do print(w) end 

此模式從一行中提取所有單詞,一個單詞是非空白字符的運行。

0

這不是正則表達式的工作。下面是在python簡單實現:但是

>>> s = '58.21 -13.73 57 -1' 
>>> [float(i) for i in s.split()] 
[58.21, -13.73, 57.0, -1.0] 

的原則是普遍的:分裂的空間,如果需要轉換爲數值型。

0

在Lua中:

(%-?%d+%.?%d+)%s+(%-?%d+%.?%d+)%s+(%-?%d+%.?%d+)%s+(%-?%d+%.?%d+) 

例子:

local a, b, c, d = ("58.21 -13.73 57 -1"):match(
    "(%-?%d+%.?%d*)%s+(%-?%d+%.?%d*)%s+(%-?%d+%.?%d*)%s+(%-?%d+%.?%d*)" 
) 
print(a, b, c, d) --> 58.21 -13.73 57 -1 

你可能(也可能不會)要返回的值轉換爲數字。

0

我假設通過「解析」你的意思,你想要一個正則表達式,將匹配一個數字。在您所提供的字符串,你想比賽是:

  • 58.21
  • -13.73
  • -1

我可能會使用該模式是([^ ]+)。它會發現除空間以外的任何內容,在您的字符串中,它將是具有(可能)小數點和符號的數字。