正则表达式在 swift 中提取一个字符串和另一个字符串的第三次出现之间的字符串?

标签 regex swift

我有一个很大的 HTML,我必须快速解析它并提取一些 id。

我如何从 :data-max-position="NAME-661174248527044608-661303076113014786-BD1UO2FFu9QAAAAAAAAET 中提取以下字符串 NAME-661174248527044608-661303076113014786 (number ar 之间不固定大小)? 我需要在 data-max-position="和第三次出现的 "-"之间获取数据

我应该使用什么正则表达式来提供我需要的信息?

到目前为止,对于另一种字符串,我使用了以下内容,但我不知道应该使用什么正则表达式来获取第一部分中提到的内容

    let query = mystr
    let regex = try! NSRegularExpression(pattern:"data-name-id=\"(.*?)\"", options: [])
    let tmp = query as NSString
    var results = [String]()

    regex.enumerateMatches(in: query, options: [], range: NSMakeRange(0, query.characters.count)) { result, flags, stop in
        if let range = result?.rangeAt(1) {
            results.append(tmp.substring(with: range))
        }
    }

    print(results) // ["test", "test1"]

它提取了 "data-name-id" 和第二个 "

中的内容

最佳答案

如果你有一个你提到的格式的纯文本字符串,你可以使用正则表达式来提取它的一部分:

pattern:"\\sdata-max-position=\"([^\"-]+-[^\"-]+-[^\"-]+)"

详细信息:

  • \\s - 一个空格
  • data-max-position=\" - 文字 data-max-position=" 子字符串
  • ([^\"-]+-[^\"-]+-[^\"-]+) - 第 1 组(您需要的值)匹配
    • [^\"-]+ - "-
    • 以外的一个或多个字符
    • - - 连字符
    • [^\"-]+-[^\"-]+ - 见上文。

请注意,[^...] 是一个 *negated 字符类,它匹配字符类中范围/集中未定义的任何字符。

关于正则表达式在 swift 中提取一个字符串和另一个字符串的第三次出现之间的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40386572/

相关文章:

regex - 匹配 HH :MM time format 的正则表达式

Javascript 正则表达式 URL 匹配

ios - Firebase 实时数据库 iOS 删除键

ios - 在选项卡栏 Controller 中从 SecondView 刷新 FirstView

正则表达式:获取每一行的一个月

python - 正则表达式的不平衡括号错误

arrays - 从数组中添加子项

ios - 如何在 Swift 3 的 Map Kit 中更改选定的图钉图像?

Swift UITextField 边框扩展

sql - Oracle 在空格前获取子字符串