2015-11-18 43 views
0

嗨,我是新來的正則表達式我試圖l_fix後搶在下面的JSON值:正則表達式JSON鍵值

{ "id": "626307" ,"t" : ".INX" ,"e" : "INDEXSP" ,"l" : "2,050.59" ,"l_fix" : "2050.59" ,"l_cur" : "2,050.59" ,"s": "0" ,"ltt":"3:08PM EST" ,"lt" : "Nov 17, 3:08PM EST" ,"lt_dts" : "2015-11-17T15:08:33Z" ,"c" : "-2.60" ,"c_fix" : "-2.60" ,"cp" : "-0.13" ,"cp_fix" : "-0.13" ,"ccol" : "chr" ,"pcls_fix" : "2053.19" } 

現在,我使用\d[,](?:\d*\.)?\d+ 然而,這似乎是一個有點蠻力,我相信它可以做得更好。

+0

在女性角色上難以接受的是在「屬性名稱」和「價值」中承認的語言 – RiccardoC

+1

語言? JavaScript我想。爲什麼是一個正則表達式? – Diego

+3

***將JSON解碼爲您選擇的語言的任何本地數組/對象類型,然後直接訪問該密鑰...! – deceze

回答

0

正則表達式似乎並不是你所需要的,但是如果你想用正則表達式來完成它可能是這樣的:"l_fix"\s*:\s*"(.+?)"。然後,在第一組中,您將獲得您正在尋找的價值。

See it working here

此外,see this SO post about regex roups in matlab

+0

我也試過這個,但是我只想返回'l_fix'後的數字,而不是密鑰本身。我認爲'':'會做的伎倆,但它似乎沒有什麼差別。 – Jason

+0

看到我鏈接的SO帖子。你需要''代幣''而不是''match'' – Diego

-1

爲什麼使用JSON解析器的正則表達式是最好的方法。 JavaScript中的示例:

var str = '{ "id": "626307" ,"t" : ".INX" ,"e" : "INDEXSP" ,"l" : "2,050.59" ,"l_fix" : "2050.59" ,"l_cur" : "2,050.59" ,"s": "0" ,"ltt":"3:08PM EST" ,"lt" : "Nov 17, 3:08PM EST" ,"lt_dts" : "2015-11-17T15:08:33Z" ,"c" : "-2.60" ,"c_fix" : "-2.60" ,"cp" : "-0.13" ,"cp_fix" : "-0.13" ,"ccol" : "chr" ,"pcls_fix" : "2053.19" }'; 
var parsedStr = JSON.parse(str); 
alert(parsedStr.l_fix); 

其他語言也有JSON解析器。

+0

不好回答;在我的情況下,我試圖解析日誌文件。我不想加載日誌的每一行,解析JSON,然後找到我需要的數據,這樣做會耗費大量時間和內存。使用正則表達式似乎可以做到這一點,它*更快*並使用*少內存*。 –

+0

「日誌文件大小寫」就是你的情況。在這個問題中並不意味着日誌文件 –