我有一个看起来像这样的字符串:
"OS-MF sessionId='big_super-long-id_string', factor='PASSCODE'"
但我需要获取该字符串中的 sessionId。有人可以 swift 帮助我吗?我尝试过正则表达式,但无法正常工作。
最佳答案
如果您想使用正则表达式,您可以使用以下函数来匹配任何出现的模式:
func matchesForRegexInText(regex: String!, text: String!) -> [String] {
let regex = NSRegularExpression(pattern: regex, options: nil, error: nil)!
let nsString = text as NSString
let results = regex.matchesInString(text,
options: nil, range: NSMakeRange(0, nsString.length))
as! [NSTextCheckingResult]
return map(results) { nsString.substringWithRange($0.range)}
}
您可以使用以下正则表达式对其进行测试:
let myStringToBeMatched = "OS-MF sessionId='big_super-long-id_string', factor='PASSCODE'"
var results = self.matchesForRegexInText("(?<=sessionId=')(.*)(?=',)", text: myStringToBeMatched)
for item in results {
println(item)
}
输出应该是:
big_super-long-id_string
Notes:
(?<=sessionId=') means preceded by sessionId='
(.*) means any character zero or more times
(?=',) means followed by ',
您可以阅读有关正则表达式模式的更多信息 here
希望对你有帮助
关于regex - Swift 从字符串中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30469264/