import Foundation
let pattern = #"(?:Subject:|Summary:)[^"]*"(.*?)""#
let regex = try! NSRegularExpression(pattern: pattern, options: .caseInsensitive)
let testString = ##"""
exports.onAppointment = (appt, user, lang, isNew) ->
if not user then return Promise.reject "Appointment has no user."
moment.locale(lang)
start = moment(appt.when)
cal = new ICal()
console.log appt.when
cal.addEvent
start: start.toDate()
end: moment(start).add(2,"hours").toDate()
summary: "Continental showroom visit"
mail =
to: user.emailId
subject: if isNew then "New appointment" else "Appointment updated"
alternatives: [
contentType: "text/calendar",
contents: new Buffer(cal.toString()),
contentEncoding: "7bit"
]
template =
name: "booking"
lang: lang
locals:
name: "#{user.firstName} #{user.lastName}"
datetime: moment(appt.when).format("dddd Do MMMM [at] HH:mm A")
cancelurl: config.server.baseUrl + "/appointment/cancel/#{appt._id}"
emailClient.send2 mail, template
"""##
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