import Foundation
let pattern = #"field: "(.*?)""#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = ##"""
{field: "platformID",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'ne', 'cn', 'gt', 'lt']},
sortFunc: 'number'
},
{field: "platformName",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
cellTemplate: '<a href="#/clemove/clemoveDetaiPlatform/{{row.platformID}}" translate="{{row.platformID}}"></a>',
search: {operator: ['eq', 'cn']},
},
{field: "platformOwnerTEF",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
sortFunc: 'number'
},
{field: "platformOwnerZTE",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
sortFunc: 'number'
},
{field: "platformVendor",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
sortFunc: 'number'
},
{field: "platformE2E",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
},
{field: "platformInternalDependency",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
},
{field: "platformServiceDependency",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
},
{field: "platformPreferedMoveDate",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
},
{field: "platformUnpreferedMoveDate",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
},
{field: "platformAdditionalTool",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
},
{field: "platformVM",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
},
{field: "platformCommunicationMatrix",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
},
{field: "stateName",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
cellFilter: 'translate',
},
{field: "modeName",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
},
{field: "relocationgroupName",
displayName: "T_MOVE_DASHBOARD_COLDEF_INCIDENTID",
quickSearch: true,
search: {operator: ['eq', 'cn']},
},
"""##
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