我得到了这样一个字符串:
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/