import Foundation
let pattern = #"(?<="3h":|"3h":)((d+)|\d+\.\d+)(?=)"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"{"city":{"id":1217734,"name":"Boysun","findname":"BOYSUN","country":"UZ","coord":{"lon":67.198608,"lat":38.206108},"zoom":8,"langs":[{"link":"http:\/\/en.wikipedia.org\/wiki\/Boysun"},{"ru":"Бойсун"}]},"time":1394871628,"main":{"temp":274.74,"temp_min":274.74,"temp_max":274.74,"pressure":823.92,"sea_level":1035.91,"grnd_level":823.92,"humidity":98},"wind":{"speed":0.6,"deg":97.004},"clouds":{"all":92},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"rain":{"3h":0.1},"snow":{"3h":0.85}}"#
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