import Foundation
let pattern = #"(,+(.+[A-Z]{2} [0-9-]+)(,.*)(http.*[-._A-Za-z]+.[a-z]+),([-0-9]+),([- 0-9a-z]+))|(,+(.+[A-Z]{2} [0-9-]+))"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
,P.O. Box 11000 Montgomery, AL 36191-0001 334-288-3900,,vvv
,,15520 Rockfield Blvd. Ste. C Irvine, CA 92618-2792,...Whether you are looking for a list broker, list manager, database marketing or data processing profe*ssional, 's experienced...,http://www.carneydirect.com,949-581-5100,949-581-4564 fax,.,
,115 Sansome Street San Francisco, CA 94104-4508,...We are a "Results Agency" based in San Francisco that is dedicated to producing top performing creative and strategy for...,http://www.creativelift.net,415-248-3174,415-398-0144 fax,.,
,,2051 Dogwood Street Suite 220 Louisville, CO 80027,...The premier database marketing solutions provider and behavioral targeting firm for multi-channel marketers and advertisers. You can create, build and...,http://www.i-behavior.com,303-228-5000,303-...
,198 Scribner Ave. Norwalk, CT 06854-1324,...I am an email marketing and direct marketing consultant. I help companies build, execute and analyze their customer acquisition...,http://www.reggiebrady.com,203-838-8138,.,,,,,,
,RMI Direct Marketing,,44 Old Ridgebury Road, Plaza One Danbury, CT 06810-5129,...RMI is a premier customer acquisition, data and insert management firm. We specialize in market and competitor analysis, acquisition plans,...,http://www.rmidirect.com,203-798-0448,203-778-6130 fax,.,
"""#
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