2010-11-12 141 views
1

我有以下JSON字符串作爲日誌行的一部分。正則表達式過濾掉json字符串中的部分鍵值

cells : {"Lac":"7824","CntryISO":"us","NetTyp":"GSM","NetOp":"310260","Cid":"11983"} 

我想篩選出以下格式:{"Lac":"7824","Cid":"11983"}

如何使用正則表達式來做到這一點?在Javascript或Python? 鍵是常量字符串(Lac,CntryISO,...),但值字符串是變化的。

+0

OMG! http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – jordanbtucker 2010-11-12 02:18:40

+0

除了使用regexen來解析JSON比使用它們解析更加遲鈍XML,因爲JSON更容易正確工作。 – aaronasterling 2010-11-12 02:46:01

+0

對於那些認爲這是遲鈍的問題...這是從我從服務器獲得的日誌文本...我知道我可以輕鬆地重新構建JSON對象並操縱它...但是,它太多了開銷爲每個日誌行創建一個json爲此....我相信reg exp應該可以處理它.. – haijin 2010-11-13 21:34:14

回答

1

擴大和解釋@alex答案:

JSON是巢狀多維結構。簡單地過濾「Javascript對象的字符串形式」(又名JSON)將在非常簡單的情況下工作,但當結構不再平坦或開始與轉義字段等變得複雜時,將迅速失敗。

那時你需要適當的解析邏輯。這是很好的的Javascript自身提供,引用@alexes代碼:

var myJson = {"Lac":"7824","CntryISO":"us","NetTyp":"GSM","NetOp":"310260","Cid":"11983"}; 

delete myJson.Lac; 
delete myJson.cId; 

或者,如果你想使用Python,該json模塊會工作得很好: http://docs.python.org/library/json.html

祝你好運! :)

5

你爲什麼不在delete他們在JavaScript?

var myJson = {"Lac":"7824","CntryISO":"us","NetTyp":"GSM","NetOp":"310260","Cid":"11983"}; 

delete myJson.Lac; 
delete myJson.cId; 
+0

爲什麼reg不能處理這個?它不應該那麼辛苦......我討厭爲每個日誌行創建一個json對象並讓GC不斷運行。 – haijin 2010-11-13 21:36:25

+0

正則表達式可以,但是在論據上不是正確的工具。 – alex 2010-11-14 03:25:13

0

爲什麼要在使用正則表達式時使用JSON解析器/序列化程序?如果您關心速度,請嘗試Python中的cjson,它比Python標準庫中的'json'模塊更快。

+0

我可以...但需要爲每個日誌行創建json對象的開銷...我只是想知道這應該不難與reg exp ...也許我錯了。 – haijin 2010-11-13 21:39:01