import Foundation
let pattern = #""name"\:"(.*?)""#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"{"responseheader":{"status":0,"qtime":0},"initfailures":{},"status":{"alfresco":{"name":"alfresco","instancedir":"/opt/alfresco-search-services/solrhome/alfresco","datadir":"/opt/alfresco-search-services/solrhome//alfresco/","config":"solrconfig.xml","schema":"schema.xml","starttime":"2021-08-19t02:12:04.560z","uptime":8396697412,"index":{"numdocs":6530,"maxdoc":6567,"deleteddocs":37,"indexheapusagebytes":-1,"version":8008,"segmentcount":7,"current":true,"hasdeletions":true,"directory":"org.apache.lucene.store.nrtcachingdirectory:nrtcachingdirectory(mmapdirectory@/opt/alfresco-search-services/solrhome/alfresco/index lockfactory=org.apache.lucene.store.nativefslockfactory@17aaa8c6; maxcachemb=48.0 maxmergesizemb=4.0)","segmentsfile":"segments_16t","segmentsfilesizeinbytes":553,"userdata":{"committimemsec":"1634259620015"},"lastmodified":"2021-10-15t01:00:20.015z","sizeinbytes":7442643,"size":"7.1 mb"}},"archive":{"name":"archive","instancedir":"/opt/alfresco-search-services/solrhome/archive","datadir":"/opt/alfresco-search-services/solrhome//archive/","config":"solrconfig.xml","schema":"schema.xml","starttime":"2021-08-19t02:12:04.556z","uptime":8396697416,"index":{"numdocs":4206,"maxdoc":4218,"deleteddocs":12,"indexheapusagebytes":-1,"version":7901,"segmentcount":6,"current":true,"hasdeletions":true,"directory":"org.apache.lucene.store.nrtcachingdirectory:nrtcachingdirectory(mmapdirectory@/opt/alfresco-search-services/solrhome/archive/index lockfactory=org.apache.lucene.store.nativefslockfactory@17aaa8c6; maxcachemb=48.0 maxmergesizemb=4.0)","segmentsfile":"segments_14m","segmentsfilesizeinbytes":489,"userdata":{"committimemsec":"1634259610017"},"lastmodified":"2021-10-15t01:00:10.017z","sizeinbytes":801540,"size":"782.75 kb"}}}}"#
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