【问题标题】:regex to detect a pattern in a JSON string正则表达式检测 JSON 字符串中的模式
【发布时间】:2013-03-04 11:06:36
【问题描述】:

我有一个这样的字符串

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

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

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

感谢您的帮助。

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

编辑' 模式是:键始终是"UserToken",后跟一个空格,然后是:,然后是另一个空格,然后是双引号"中的值。我想得到这个值。

【问题讨论】:

  • 描述令牌的模式。例如,“正好 n 位”等。
  • 是否需要正则表达式? JSON 值可以通过它们的键来访问。你只需要一个objective-c json parser
  • json 格式总是一样的吗?在这种情况下,我宁愿使用 JSON 解析器,也不愿使用正则表达式。
  • @AndrewLogvinov 我用模式编辑我的问题。
  • @Viehzeug 我需要使用正则表达式,因为我不知道“设置”键在 Json 中的位置。它可能在根级别或在另一个键内。我试图避免在所有键和内键上循环

标签: iphone objective-c regex


【解决方案1】:

由于它是 json 格式,因此您实际上不需要使用正则表达式对其进行解析,但如果您需要,这可以是一个解决方案:

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

【讨论】:

    【解决方案2】:

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

    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 *)]

    【讨论】:

    • 谢谢你,但我需要使用正则表达式
    • Welcome :) 在这里,我们通过upvotes 表示感谢 :) 也许我稍后会尝试查看并写给您使用 Regex 的方法(我现在没有它)
    猜你喜欢
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多