import Foundation
let pattern = ##"^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,64}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,64}[a-z])?){1,2}$"##
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = ##"""
bhagat.ali@gmail.com
bhagat.ali@gmail
abhagat@capitalone.com
bhagat.ali@gmail.co.in
bhagat.ali@gmail.co-in
bhagat.ali@gmail.co.
bhagat.ali@gmail.co.in.ca
bhagat.ali@gmail.co.in.ca.
bhagat.ali@gmail...com
ali!b@gmail.com
ali#b@gmail.com
ali$b@gmail.com
ali%b@gmail.com
ali&b@gmail.com
ali'b@gmail.com
ali***$$$b@gmail.com
ali+++b@gmail.com
ali////b@gmail.com
ali===Tets@gmail.com
ali????b@gmail.com
ali^^^^^^b@gmail.com
ali____b@gmail.com
ali````b@gmail.com
ali{{{{}}}}b@gmail.com
ali|||||b@gmail.com
ali~~~~b@gmail.com
ali------b@gmail.com
bhagat.ali@12345678901234567890123456789012345678901234567890123456789012345678.com
bhagat.ali@12345678901234567890123456789012345678901234567890123456789012345.com
bhagat@c.99a
"""##
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