正则表达式在 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
}
}
我正在尝试从一个字符串中获取子字符串。为此,我正在应用正则表达式 {[^{]*}
但它在我的 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
}
}