2012-04-16 66 views
0

我需要提取lat和長從一個字符串,可以在這兩個格式之一:正則表達式的緯度和多頭排列

[-1.23,1.23] 
(-1.23,1.23) 

現在這是我在做什麼,但只有用[]作品沒有():

Location.new(coordinates: [string.gsub(/\[|,(.*)\]/,'').to_f, string.gsub(/\[(.*),\s|\]/,'').to_f]) 

我需要long,lat命令,因爲我使用的是mongodb。

謝謝。

+0

請張貼它們各自的輸出的不同輸入的例子和你現在的代碼。 – heltonbiker 2012-04-16 03:17:25

+0

我會考慮除了第一個和最後一個字符以外的所有字符,並在逗號分割 - 看起來更容易。 – 2012-04-16 03:39:44

回答

0

您可以使用以下正則表達式/([\[\(])([^,]*),(.*?)([\]\)])/

我對節點進行測試:

> var re = /([\[\(])([^,]*),(.*?)([\]\)])/; 
> var s = "[-1.23,1.23]"; 
> var t = "(-1.23,1.23)"; 
> s.match(re) 
[ '[-1.23,1.23]', 
    '[', 
    '-1.23', 
    '1.23', 
    ']', 
    index: 0, 
    input: '[-1.23,1.23]' ] 
> t.match(re) 
[ '(-1.23,1.23)', 
    '(', 
    '-1.23', 
    '1.23', 
    ')', 
    index: 0, 
    input: '(-1.23,1.23)' ]