ios – NSRegularExpression无法找到捕获组匹配项

ios – NSRegularExpression无法找到捕获组匹配项,第1张

概述我正在尝试使用一个正则表达式模式解析字符串. 这是模式: (\")(.+)(\")\s*(\{) 这是要解析的文本: "base" { 我想找到这4个捕获组: 1. "2. base3. "4. { 我正在使用以下代码尝试捕获这些组 class func matchesInCapturingGroups(text: String, pattern: String) -> [String] { 我正在尝试使用一个正则表达式模式解析字符串.

这是模式:

(\")(.+)(\")\s*(\{)

这是要解析的文本:

"base" {

我想找到这4个捕获组:

1. "2. base3. "4. {

我正在使用以下代码尝试捕获这些组

class func matchesInCapturingGroups(text: String,pattern: String) -> [String] {    var results = [String]()    let textRange = NSMakeRange(0,count(text))    var index = 0    if let matches = regexp(pattern)?.matchesInString(text,options: NSMatchingOptions.ReportCompletion,range: textRange) as? [NSTextCheckingResult] {        for match in matches {            // this match = <NSExtendedRegularExpressionCheckingResult: 0x7fac3b601fd0>{0,8}{<NSRegularExpression: 0x7fac3b70b5b0> (")(.+)(")\s*(\{) 0x1}            results.append(self.substring(text,range: match.range))        }    }    return results}

不幸的是,它只能找到一个范围(0,8)的组,它等于:“base”{.所以它找到一个组,它是整个字符串而不是4个组.

甚至可以使用NSRegularExpression来获取这些组吗?

解决方法 是的,当然有可能.您只需要更改当前逻辑以查找实际组:

func matchesInCapturingGroups(text: String,text.lengthOfBytesUsingEnCoding(NSUTF8StringEnCoding))    do {        let regex = try NSRegularExpression(pattern: pattern,options: [])        let matches = regex.matchesInString(text,range: textRange)        for index in 1..<matches[0].numberOfRanges {            results.append((text as Nsstring).substringWithRange(matches[0].rangeAtIndex(index)))        }        return results    } catch {        return []    }}let pattern = "(\")(.+)(\")\s*(\{)"print(matchesInCapturingGroups("\"base\" {",pattern: pattern))

你实际上只得到1场比赛.你必须进入那场比赛,在那里你会找到被捕获的组.请注意,我省略了第一个组,因为第一个组代表整个匹配.

这将输出

[“””,“base”,“””,“{“]

请注意转义的正则表达式字符串,并确保您使用相同的字符串.

总结

以上是内存溢出为你收集整理的ios – NSRegularExpression无法找到捕获组匹配项全部内容,希望文章能够帮你解决ios – NSRegularExpression无法找到捕获组匹配项所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1058623.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存