2010-11-12 146 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