我有一个这样的字符串:
var string = "AAAAAAABBBCCCCCCDD"
并喜欢将字符串分割成这种格式的数组(same characters --> same group
) 使用正则表达式:
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 https://stackoverflow.com/a/27880748/4763963:
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 []
}
}
Passing (.)\\1+
as regex
and AAAAAAABBBCCCCCCDD
as text
像这样:
let result = matches(for: "(.)\\1+", in: "AAAAAAABBBCCCCCCDD")
print(result) // ["AAAAAAA", "BBB", "CCCCCC", "DD"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)