正则表达式检测JSON字符串中的模式

时间:2013-03-04 11:06:36

标签: iphone objective-c regex

我有一个像这样的字符串

"Settings" : { "UserId" : 3, "UserToken" : "4578965235874158", "SecurityCode" : "111", "Password" : "12345", "UserPhone" : "555-555-1531", "drop" : -1, "UserLastName" : "Smith" }

我需要一个正则表达式模式来查找"UserToken"的值(在此示例中为4578965235874158

很抱歉,如果这是一个“给我代码”的问题,但我从未使用正则表达式而且我没有太多时间学习并尝试自己动手。

感谢您的帮助。

附加说明: 我将在Objective-C中将它用于iPhone应用程序。我不知道这是否会影响任何事情,只是为了以防万一。

修改” 模式是:密钥总是"UserToken"后跟一个空格,然后是:,然后是另一个空格,然后是双引号"内的值。我想得到这个价值。

2 个答案:

答案 0 :(得分:0)

由于它是json格式,你不需要用正则表达式解析它,但如果你需要,这可以是一个解决方案:

(?<="UserToken"\s:\s")\d+

答案 1 :(得分:0)

我会转换它并访问我需要的所有信息:

NSString *str = @"\"Settings\" : { \"UserId\" : 3, \"UserToken\" : \"4578965235874158\", \"SecurityCode\" : \"111\", \"Password\" : \"12345\", \"UserPhone\" : \"555-555-1531\", \"drop\" : -1, \"UserLastName\" : \"Smith\" }";

//NSDictionary *jsonDict = [str JSONValue];

NSError *error;
NSData *jsonData = [str dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];

所有信息都存储在结果NSDictionary中,只需执行以下操作:[results valueForKey:(NSString *)][results objectForKey::(NSString *)]