我有以下字符串,我試圖執行正則表達式字符串提取:{"code":5,"id":104,"message":"Not working"}
。我需要執行提取,因爲有時多個字符串可能會捆綁在一起,如下所示:{.....}{...}{......}
NSRegularExpression捕獲部分無效的JSON
我已經使用JSONSerialization作爲個別消息進來的情況:{"code":5,"id":104,"message":"Not working"}
。
我需要正則表達式來提取單個字符串,當我得到這樣的消息:{"code":5,"id":104,"message":"Not working"}{"code":5,"id":101,"message":"some message"}{"code":5,"id":105,"message":"test"}
。
我有一個字符串相匹配的正則表達式如下:{.*?"id":104.*?}
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"{.*?\"id\":104.*?}" options:NSRegularExpressionCaseInsensitive error:&error];
//regex is returning (null) here
NSRange range = [regex rangeOfFirstMatchInString:msg options:0 range:NSMakeRange(0, [msg length])];
NSString *result = [msg substringWithRange:range];
//Result is empty
[regex enumerateMatchesInString:msg options:0 range:NSMakeRange(0, [msg length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSRange range = [result rangeAtIndex:1];
NSString *regexStr = [msg substringWithRange:range];
}];
我相信這個問題是我的正則表達式。我可能不會正確地轉義它。
我試過{.*?\\\"id\\\":104.*?}
但結果是一樣的。
我是否正確地說我需要一個正則表達式來管理和提取字符串,當多個到達?
我認爲它是一種JOSN甲的你爲什麼不使用JSONSerilation此? – CodeChanger
是這個'{「code」:5,「id」:104,「message」:「Not working」}'string or dictioanry –
如上所述 - 看起來您正在使用錯誤的工具進行工作。對我來說,這看起來像JSON。其中正則表達式不是正確的做法 – Tander