带[:]的正则表达式模式返回无效

时间:2018-01-03 18:24:57

标签: regex swift

我正在使用正则表达式搜索文本以查找特定模式,它似乎工作正常,直到我想要包含":"

我用来查找文本的函数是:

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]“无效

到目前为止,我发现问题是第二个[:],因为当我删除它时一切正常。任何人都知道,我能做什么? 非常感谢

1 个答案:

答案 0 :(得分:0)

也许它认为[: ... :]是一个无效的posix角色类?对我来说似乎是一个错误。

[\:]会修复吗? (虽然不需要为单个字符使用字符类;您可以只使用:而不是[:]。)