import Foundation
let pattern = #"(head|director|vp|vice[- ]president|chief)\s*(of\s*)?(growth|marketing)|cmo|chief marketing officer|C(ief )?R(evenue )?O(fficer)?\b"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = #"""
"Revenue Ops Manager",
"Growth Marketing Manager",
"CEO",
"Director of Operations",
"Sales Ops Analyst",
"VP of Sales",
"Marketing Operations Specialist",
"Lead Generation Manager",
"Product Ops Director",
"GTM Strategy Lead",
"Head of Growth",
"Chief Marketing Officer",
"Director of Business Development",
"Junior Revenue Analyst",
"Freelance Growth Consultant",
"CTO and Product Owner",
"Sales Development Representative",
"Intern Marketing Operations",
"Business Systems Administrator",
"Country Manager and COO",
"Chief Growth Officer",
"VP Marketing and Communications",
"Head of Business Opportunities",
"Revenue Operations Specialist",
"Product Marketing Manager"
Revenue Ops
RevOps
Chief Revenue Officer
CRO
CMO
"""#
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