正则表达式在 swift 中不起作用。报错 "invalid regex"

Regex not working in swift. Giving an error "invalid regex"

我正在尝试从一个字符串中获取子字符串。为此,我正在应用正则表达式 {[^{]*} 但它在我的 swift 代码中不起作用并给我一个错误“无效的正则表达式”。相同的正则表达式适用于 https://regex101.com/r/B8Gwa7/1。我正在使用以下代码来应用正则表达式。我需要在“{”和“}”之间获取子字符串。我可以在不使用正则表达式的情况下获得相同的结果吗?或者我的正则表达式或代码有什么问题吗?

static func matches(regex: String, text: String) -> Bool {
        do {
            let regex = try NSRegularExpression(pattern: regex, options: [.caseInsensitive])
            let nsString = text as NSString
            let match = regex.firstMatch(in: text, options: [],
                                         range: NSRange(location: .zero, length: nsString.length))
            return match != nil
        } catch {
            print("invalid regex: \(error.localizedDescription)")
            return false
        }
    }

大括号是必须转义的特殊字符

\{[^}]*\},在 Swift 文字字符串中 \{[^}]*\}

顺便说一句,不要使用 NSRange 的字面量初始值设定项来获取字符串的长度,强烈推荐的方法是

static func matches(regex: String, text: String) -> Bool {
    do {
        let regex = try NSRegularExpression(pattern: regex, options: .caseInsensitive)
        let match = regex.firstMatch(in: text, options: [],
                                     range: NSRange(text.startIndex..., in: text)
        return match != nil
    } catch {
        print("invalid regex: \(error.localizedDescription)")
        return false
    }
}