NSRegularExpression用于提取Swift 3中的文本子集

时间:2017-10-25 18:36:30

标签: regex swift3 nsregularexpression

我正在尝试使用NSRegularExpression(pattern:regex)在字符串中提取10.32.15.235:\" IPAddress \":\" 10.32.15.235 \",\ " WAN \"使用Swift 3.

但是,我在此answer

中使用此功能时出错
func matches(for regex: String, in text: String) -> [String] {

    do {
        let regex = try NSRegularExpression(pattern: regex)
        let nsString = text as NSString
        let results = regex.matches(in: text, range: NSRange(location: 0, length: nsString.length))
        return results.map { nsString.substring(with: $0.range)}
    } catch let error {
        print("invalid regex: \(error.localizedDescription)")
        return []
    }
}

通过此电话:

        let pattern = "IPAddress\\\":\\\"(.+?)\\"
        let IPAddressString = self.matches(for: pattern, in: stringData!)
        print(IPAddressString)

但是,使用此错误调用函数的错误部分:

  

无效的正则表达式:值“IPAddress \":\"(。+?)\”无效。

你能帮我修改Swift 3的正则表达式吗?

由于

1 个答案:

答案 0 :(得分:0)

请注意,如果您拥有有效的JSON,则可以使用带有Swift的JSON解析器。

要修复当前的正则表达式方法,可以使用

let pattern = "(?<=IPAddress\":\")[^\"]+"

模式详情

  • (?<=IPAddress\":\") - 与IPAddress":" substring
  • 之后的字符串中的位置匹配的正向前瞻
  • [^\"]+ - 与"以外的一个或多个字符匹配的否定字符类

请参阅regex demo