我正在使用正则表达式搜索文本以查找特定模式,它似乎工作正常,直到我想要包含":"
我用来查找文本的函数是:
func matches(for regex: String, in text: String) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex)
let results = regex.matches(in: text,
range: NSRange(text.startIndex..., in: text))
return results.map {
String(text[Range($0.range, in: text)!])
}
} catch let error {
print("invalid regex: \(error.localizedDescription)")
return []
}
}
我用来测试模式的示例数组是:
var textstringarray = ["10:50 - 13:40","ABC"]
以下是检查不同项目的循环:
for myString in textstringarray{
let matched2 = matches(for: "[0-9][0-9][:][0-9][0-9] [-] [0-9][0-9][:][0-9][0-9]", in: myString)
if !matched2.isEmpty{
print(matched2)
}
}
我希望它只返回第一个项目,但Log in Playground仅显示
无效的正则表达式:值“[0-9] [0-9] [:] [0-9] [0-9] [ - ] [0-9] [0-9] [:] [0 -9] [0-9]“无效
到目前为止,我发现问题是第二个[:],因为当我删除它时一切正常。任何人都知道,我能做什么? 非常感谢
答案 0 :(得分:0)
也许它认为[: ... :]
是一个无效的posix角色类?对我来说似乎是一个错误。
[\:]
会修复吗? (虽然不需要为单个字符使用字符类;您可以只使用:
而不是[:]
。)