import Foundation
let pattern = #"(?:Expiration Fee: )?(\d+)\s+((?:[a-zA-Z\d\/]+\s+)*)(?:\(([a-zA-Z]+)\)\s+)?(?:>([0-9.]+)\s+)?(?:([\d.]+-[\d.]+)\s*)?(?:\((\d{1,2}(?::\d{2})?[AP]M)\)\s+)?(?:@\s+([\d.]+))?"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
Expiration Fee: 10 LONG AUD/USD >.8189 (9:50AM) @ 90.5
10 Wall St 30 (Mar) >17900 (4:15PM) @ 69.5
2 AUD/USD >.8114 (11:35AM) @ 97.5
Expiration Fee: 1 SHORT AUD/USD >.8114 (11:35AM) @ 87
2 Wall St 30 (Mar) 18000-18100 (12PM) @ 18023
2 LONG US Tech 100 (Mar) >4284 (1:15PM) @ 56.5
1 EUR/USD >1.2180 (3PM) @ 41.5
Expiration Fee: 1 SHORT AUD/USD >.8114 (11:35AM) @ 87
Expiration Fee: 1 LONG GBP/USD >1.5090 (8:55PM) @ 95.5
Expiration Fee: 2 SHORT US 500 (Mar) >2037.7 (10AM) @ 5.5
Expiration Fee: 1 SHORT EUR/USD >1.1582 (2:20PM) @ 11.5
6 SHORT GBP/USD >1.5200 (3:10PM) @ 22.3333
Expiration Fee: 1 SHORT GBP/USD >1.5085 (8PM) @ 17.5
Expiration Fee: 1 SHORT EUR/GBP >.7340 (3PM) @ 33.25
2 Wall St 30 (Mar) 18000-18100 (12PM) @ 18023
Expiration Fee: 5 LONG US Tech 100 (Mar) 4190-4390 (4:15PM) @ 4291
2 LONG Wall St 30 (Mar) >18000 (1:15PM) @ 53.5
1 AUD/USD .7570-.7670 (2PM) @ 0.7626
1 US 500 (Jun) 2075.0-2085.0
1 US 500 (Jun) 2075.0-2085.0 (1PM) @ 2079
1 AUD/USD .7570-.7670 (2PM) @ 0.7626
2 AUD/USD .8020-.8220 (11PM) @ 0.8118
"""#
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