for the following code:
import Foundation
extension String {
    var fullRange: NSRange {
        return .init(self.startIndex ..< self.endIndex, in: self)
    }
    public subscript(range: Range<Int>) -> Self.SubSequence {
        let st = self.index(self.startIndex, offsetBy: range.startIndex)
        let ed = self.index(self.startIndex, offsetBy: range.endIndex)
        let sub = self[st ..< ed]
        return sub
    }
    func split(regex pattern: String) throws -> [String] {
        let regex = try NSRegularExpression.init(pattern: pattern, options: [])
        let fRange = self.fullRange
        let match = regex.matches(in: self, options: [], range: fRange)
        var list = [String]()
        var start = 0
        for m in match {
            let r = m.range
            let end = r.location
            list.append(String(self[start ..< end]))
            start = end + r.length
        }
        if start < self.count {
            list.append(String(self[start ..< self.count]))
        }
        return list
    }
}
print(try! "مرتفع جداً\nVery High".split(regex: "\n"))
the output should be :
["مرتفع جداً", "Very High"]
but instead it is:
["مرتفع جداً\n", "ery High"]
that because regex (for this case) matched the \n at the offset 10 instead of 9
is there any thing wrong in my code, or it is a bug in swift with regex !!
 
    