【发布时间】:2018-09-26 07:08:52
【问题描述】:
我有以下字符串:
"Notes[9219:1224244] [BoringSSL] Function boringssl_context_get_peer_sct_list: line 1757 received sct extension length is less than sct data length [[["encendedor","lighter",null,null,1]],null,"en"]"
我只想提取第一次出现引号之间的字符串,在本例中为“enendedor”。 我尝试了下面的代码,我从this question. 理解的
//finalTrans has the full string that needs to be shortened
let finalTrans = (String(data: data, encoding: .utf8)!)
let regex = try! NSRegularExpression(pattern:"[[[(.*?),", options: [])
var results = [String]()
regex.enumerateMatches(in: finalTrans, options: [], range: NSMakeRange(0, finalTrans.utf16.count)) { result, flags, stop in
if let r = result?.range(at: 1), let range = Range(r, in: finalTrans) {
results.append(String(finalTrans[range]))
}
}
//prints the new string
print(results)
我目前收到此错误:
Thread 6: Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=2048 "The value “[[[(.*?),” is invalid." UserInfo={NSInvalidValue=[[[(.*?),}
如何正确提取此字符串?谢谢您的帮助。
【问题讨论】:
-
stackoverflow.com/questions/31725424/… 上的各种解决方案(带和不带正则表达式)。
-
正则表达式需要所有
[被转义。.*?也没有意义