1

<strong>Lorem Ipsum.<\/strong> Lorem Ipsum. [link-to:shop-page \"instore-pickup\"]Learn More[\/link-to]

给定上面的示例字符串(它包括 HTML),我从 3-rd 方服务获得,我无法控制对其进行改进或规范化以适应 HTML 标准。

我需要以某种方式解析这部分以[link-to:shop-page \"instore-pickup\"]Learn More[\/link-to]获得Learn More价值。

我已经尝试过\\[.*?\\](.*?)\\[.*?\\]正则表达式,但它不能满足我的需要。结果得到[link-to:shop-page \"instore-pickup\"]Learn More[/link-to]

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 []
    }
}
4

1 回答 1

1

Wiktor,感谢您指出这一点,工作片段:

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(at: 1))}
    } catch let error {
        print("invalid regex: \(error.localizedDescription)")
        return []
    }
}

$0.range(at: 1)给出第 1 组。

于 2019-10-30T23:17:54.087 回答