import Foundation
let pattern = #"\{\{[^{]*?CSM\n.*?(?=\{|$)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .dotMatchesLineSeparators)
let testString = #"""
{{c1: what is horticulture CSM}}
{{c2 : how much is production CSP}}
{{c3: which state rank 1st in horticulture CSP}}
{{c5: how to improve horticulture production CSM}}
{{c6: how much is production of fruits CSP}}
out of this above note 6 questions will be formed ( called as cards ) c1, c2. c3 and so on.
here is how my cards will look for C1. card 1: c1
{{c1: ...}}
how much is production CSP
which state rank 1st in horticulture CSP
how to improve horticulture production CSM
how much is production of fruits CSP
here is how my card will look for C2 . card 2 : C2
what is horticulture CSM
{{c2 : ... }}
"""#
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