gpt4 book ai didi

arrays - NSRegularExpression 捕获组澄清

转载 作者:行者123 更新时间:2023-11-30 13:04:00 25 4
gpt4 key购买 nike

我在理解使用 NSRegularExpression 获取捕获组时遇到了一些问题

let string = "QWERTY123 ASDFGH"
let nsString = string as NSString
let regex = try! NSRegularExpression(pattern: "(\\D+)\\d+\\s(\\D+)", options: [])
let result = regex.matchesInString(string, options: [], range: NSMakeRange(0, nsString.length))

print(result.count) // prints length of array
for r in 1..<result[0].numberOfRanges
{
print(nsString.substringWithRange(result[0].rangeAtIndex(r))) // prints captured groups
}
for r in result
{
print(nsString.substringWithRange(r.range))
}

因此,当我打印结果的长度时,我得到1。这意味着找到的表达式的范围应该在result[0]中。但是result[0]中怎么会出现捕获的组呢?我是不是想错了?

下一个是,当我将正则表达式指定为 (QWE)t 时,捕获的组循环崩溃。如何返回 nil 或其他内容来指示没有使用以下正则表达式捕获的组?

谢谢!

最佳答案

  • matchesInString返回正则表达式的所有匹配项(忽略捕获的组)。
    在您的示例中,有一个匹配项。
  • 匹配的第一个索引处的范围 ( result ) 是没有捕获组的正则表达式的匹配范围 ( {0, 16} )。
  • 范围 1..<numberOfRanges表示捕获组的范围。

  • 如果正则表达式不匹配result.count是 0 和 result[0]由于没有第一项而崩溃。

关于arrays - NSRegularExpression 捕获组澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39599061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com