相同的组)使用正则表达式: Array: "AAA-6ren">
gpt4 book ai didi

regex - 如何使用正则表达式将字符串拆分为相同字符的组?

转载 作者:搜寻专家 更新时间:2023-11-01 07:05:43 24 4
gpt4 key购买 nike

我得到了这样一个字符串:

var string = "AAAAAAABBBCCCCCCDD"

并喜欢将字符串拆分成这种格式的数组(相同的字符 --> 相同的组)使用正则表达式:

Array: "AAAAAAA", "BBB", "CCCCCC", "DD"

这是我到目前为止得到的,但我无法真正让它工作。


var array = [String]()
var string = "AAAAAAABBBCCCCCCDD"
let pattern = "\\ b([1,][a-z])\\" // mistake?!
let regex = try! NSRegularExpression(pattern: pattern, options: [])

array = regex.matchesInString(string, options: [], range: NSRange(location: 0, length: string.count))

最佳答案

您可以使用此 answer 中的函数实现该目的:

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

(.)\\1+ 作为 regex 传递,将 AAAAAAABBBCCCCCCDD 作为 text 传递,如下所示:

let result = matches(for: "(.)\\1+", in: "AAAAAAABBBCCCCCCDD")
print(result) // ["AAAAAAA", "BBB", "CCCCCC", "DD"]

关于regex - 如何使用正则表达式将字符串拆分为相同字符的组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48137343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com