import Foundation
let pattern = #"(?:(?!.{1,30}(?:\.\s|\.$|\?\s|\?$|;\s|;$|。|?|;))(?:.{30}))|(?:.{1,30}(?:\.\s|\.$|\?\s|\?$|;\s|;$|。|?|;))"#
let regex = try! NSRegularExpression(pattern: pattern, options: .dotMatchesLineSeparators)
let testString = #"""
美国不仅是世界上经济最发达的国家,其教育在全球也一样是顶级水平,每年发布的世界大学排名中,有很大的一部分是来自于美国。
但是与之卓越的教育地位相对应的是高昂的学费和生活费,这对很多普通家庭来说,无疑是天价数字。
除此之外,美国留学签证和入学门槛相对其它国家而言,也更为严格。美国教育的录取规则不同于中国,很多美国名校除了学生的学.
术背景,更看重其综合实力,比如课外活动,个人经历等.
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression