import Foundation
let pattern = #"^([[:alpha:]]+\s)+((V2)\s-\s).*$"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
AppMessages - Dev
AppMessages - Master
AppMessages2 - Dev
AppMessages2 - Master
AWS - Octopus Release
BellHop - Dev
BellHop - Master
Bellhop Model - Dev
Bellhop Model - Master
Bellhop Model V2 - Dev
Bellhop Model V2 - Master
BellHop Services - Dev
BellHop Services - Master
BSG Log4j Extras - Dev
BSG Log4j Extras - Master
BSG Log4j Extras V2- Dev
BSG Log4j Extras V2- Master
BSG-BOM - Dev
BSG-BOM - Master
BSG-BOM2 - Dev
BSG-BOM2 - Master
Core Model - Dev
Core Model - Master
Core Model V2 - Master
Core Model V2- Dev
Core Services - Dev
Core Services - Master
Core Services V2 - Dev
Core Services V2 - Master
DealerLocator - Dev
EMS Services - Dev
EMS Services - Master
EMS Services V2 - Dev
EMS Services V2 - Master
Entitlements Services - Dev
Entitlements Services - Master
Entitlements SOAP API - Dev
Laipac Service - Master
Laipac Services - Dev
Laipac Services V2 - Dev
Laipac Services V2 - Master
LDK Services - Dev
LDK Services - Master
LDK Services V2 - Dev
LDK Services V2 - Master
LicenseAdmin - Dev
LicenseAdmin - Master
LiteFlexNetIntegration - Dev
LiteFlexNetIntegration - Master
LiteIntegration - Dev
LiteIntegration - Master
LiteLib - Dev
LiteLib - Master
Logviewer - Dev
Logviewer - Master
Messaging Services - Dev
Messaging Services - Master
OptionKeys - Dev
OptionKeys - Master
OptionKeysAPI - Dev
OptionKeysAPI - Master
Pools API - Dev
Pools API - Master
Pools Model - Dev
Pools Model - Master
Pools Model V2 - Dev
Pools Model V2 - Master
Pools Services - Dev
Pools Services - Master
Pools Services V2 - Dev
Pools Services V2 - Master
SubscriptionManager - Dev
SubscriptionManager - Master
SubscriptionManager2 - Dev
SubscriptionManager2 - Master
Tid Services - Dev
Tid Services - Master
TidHTTP - Dev
TidHTTP - Master
Upload templates to S3 - branch2Dev
Upload templates to S3 - Dev
Upload templates to S3 - Master
Upload templates to S3 - Test
VirtualWarehouse - Dev
VirtualWarehouse - Master
VirtualWarehouse Services - Dev
VirtualWarehouse Services - Master
VirtualWarehouse Services V2 - Dev
VirtualWarehouse Services V2 - Master
VW Axiom - Dev
VW Axiom - Master
VW Lite API - Dev
VW Lite API - Master
VW Remedy Events - Dev
VW Remedy Events - Master
VW Remedy Events Consumer - Dev
VW Remedy Events Consumer - Master
VW Remedy Events Lib - Dev
VW Remedy Events Lib - Master
VW Scheduled Tasks - Dev
VW Scheduled Tasks - Master
VW Sentinel - Dev
VW Sentinel - Master
VW Subscriptions - Dev
VW Subscriptions - Master
VW5 - Dev
VW5 - Master
WooCommerce API - Dev
WooCommerce API - Master
WooCommerce Model - Dev
WooCommerce Model - Master
WooCommerce Model V2 - Dev
WooCommerce Model V2 - Master
WooCommerce Services - Dev
WooCommerce Services - Master
WooCommerce Services V2 - Dev
"""#
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