regex - Swift 从字符串中提取字符串

标签 regex string swift

我有一个看起来像这样的字符串:

"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/

相关文章:

ios - UITableViewController 作为下拉列表?

ios - 使用 Swift 2.0 添加要解析的图像

c# - 从任何域中提取域名的正则表达式

.net - 正则表达式可能只允许指定的字符

regex - 验证Powershell中输入的文件名

Java:如何用单个字符替换连续字符?

javascript - 如何从重复的文本模式中提取内容?

c++ - 评估 C++ 字符串中的表达式 : "Hi ${user} from ${host}"

java - javac 是否优化 "foo".length()?

swift - 如何获得 'adaptive' 结构名称?