import Foundation
let pattern = #"customer name is ([\w\s]*?(?=(?:and|or|$)))?(?:(?:(?:and|or) customer id is )(\d*)|c)? ?(?:(?:(?:and|or) policy id is ([a-zA-Z0-9]*)))?"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
customer name is jason estibeiro and customer id is 1234532
customer name is jason estibeiro or customer id is 1234532
customer name is sajal sharma and customer id is 1234532 and policy id is abcd1234
customer name is sajal sharma and customer id is 1234532 or policy id is abcd1234
customer name is sajal sharma or customer id is 1234532 and policy id is abcd1234
customer name is sajal sharma or customer id is 1234532 or policy id is abcd1234
customer name is tarun and policy id is abcd1234
customer name is tarun or policy id is abcd1234
customer name is omkar
customer name is dhiraj nambiar
"""#
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