import Foundation
let pattern = #"First Name[\s\S](?<firstname>.*)[\s\S]Last Name[\s\S](?<lastname>.*)[\s\S]Phone[\s\S](?<phone>.*)[\s\S]E-Mail[\s\S](?<email>.*)[\s\S]*age group\?[\s\S](?<agegroup>.*)[\s\S]*seeing things up close[\s\S](?<farsightedness>.*)[\s\S]*cannot see very well[\s\S](?<astigmatism>.*)[\s\S]*-Glasses[\s\S](?<glasses>.*)[\s\S]*-Contacts[\s\S](?<contacts>.*)[\s\S]*-Reading Glasses[\s\S](?<readingglasses>.*)[\s\S]*following\?-(?<following>.*)[\s\S]*distance without relying on glasses and contact lenses.[\s\S](?<distance>.*)[\s\S]*close without relying on glasses and contact lenses.[\s\S](?<close>.*)[\s\S]*contacts\?[\s\S](?<wouldyourcareerimprove>.*)[\s\S]*Test Score[\s\S](?<testscore>.*)[\s\S]*Entry ID: (?<entryid>.*)[\s\S].*Referrer: (?<referrer>.*)[\s\S]*Host: (?<formhost>.*)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
First Name Melissa
Last Name Madrid
Phone 4253068210
E-Mail Meli.madrid@yahoo.com
What is your age group? 19-39
Without my glasses and contacts-Farsightedness : I have trouble reading and seeing things up close yes
Without my glasses and contacts-Astigmatism : I have distorted vision and cannot see very well yes
What do you usually wear?-Glasses yes
What do you usually wear?-Contacts yes
What do you usually wear?-Reading Glasses yes
Do you have any of the following?-None of the above yes
I would like to see well at a distance without relying on glasses and contact lenses. 5
I would like to see well up close without relying on glasses and contact lenses. 5
Would your career or business activities improve if you were to become less dependent on glasses and contacts? Yes
Test Score -4.00
The message has been sent from 107.77.205.32 (United States) at 2020-01-10 10:39:44 on iPhone unknown
Entry ID: 2190
Referrer: http://m.facebook.com
Form Host: https://www.nweyes.com/landing/smile/
"""#
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