import Foundation
let pattern = #"%22value%22:%22(?<value>[^%]+)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
https://trends.google.com/trends/api/explore?hl=en-US&tz=-180&req=%7B%22comparisonItem%22:%5B%7B%22keyword%22:%22Mercedes%22,%22geo%22:%22%22,%22time%22:%22today+12-m%22%7D,%7B%22keyword%22:%22BMW%22,%22geo%22:%22%22,%22time%22:%22today+12-m%22%7D,%7B%22keyword%22:%22Audi%22,%22geo%22:%22%22,%22time%22:%22today+12-m%22%7D%5D,%22category%22:0,%22property%22:%22%22%7D&tz=-180
https://trends.google.com/trends/api/explore?hl=en-US&tz=-180&req=%7B%22comparisonItem%22:%5B%7B%22keyword%22:%22Mercedes%22,%22geo%22:%22%22,%22time%22:%22today+12-m%22%7D,%7B%22keyword%22:%22BMW%22,%22geo%22:%22%22,%22time%22:%22today+12-m%22%7D,%7B%22keyword%22:%22Audi%22,%22geo%22:%22%22,%22time%22:%22today+12-m%22%7D%5D,%22category%22:0,%22property%22:%22%22%7D&tz=-180
https://trends.google.com/trends/api/explore?hl=en-US&tz=-180&req=%7B%22comparisonItem%22:%5B%7B%22keyword%22:%22Mercedes%22,%22geo%22:%22%22,%22time%22:%22today+12-m%22%7D,%7B%22keyword%22:%22BMW%22,%22geo%22:%22%22,%22time%22:%22today+12-m%22%7D,%7B%22keyword%22:%22Audi%22,%22geo%22:%22%22,%22time%22:%22today+12-m%22%7D%5D,%22category%22:0,%22property%22:%22%22%7D&tz=-180
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Mercedes%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHgSviwjES4tKMjOoqzulsmpTJkMH
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Mercedes%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHgSviwjES4tKMjOoqzulsmpTJkMH
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Mercedes%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHgSviwjES4tKMjOoqzulsmpTJkMH
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Audi%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHoR3ZXTNX106x_9ChEfR5O9n2RS9
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Audi%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHoR3ZXTNX106x_9ChEfR5O9n2RS9
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Audi%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHoR3ZXTNX106x_9ChEfR5O9n2RS9
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22BMW%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHpXz1VjuZ5D-QVdesm9hTjUWP1a_
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22BMW%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHpXz1VjuZ5D-QVdesm9hTjUWP1a_
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22BMW%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHpXz1VjuZ5D-QVdesm9hTjUWP1a_
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Mercedes%22%7D%5D%7D%7D,%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22BMW%22%7D%5D%7D%7D,%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Audi%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22dataMode%22:%22PERCENTAGES%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHsLufGv3pfQ2BxPNw8dI-wIKkr_l
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Mercedes%22%7D%5D%7D%7D,%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22BMW%22%7D%5D%7D%7D,%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Audi%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22dataMode%22:%22PERCENTAGES%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHsLufGv3pfQ2BxPNw8dI-wIKkr_l
https://trends.google.com/trends/api/widgetdata/comparedgeo?hl=en-US&tz=-180&req=%7B%22geo%22:%7B%7D,%22comparisonItem%22:%5B%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Mercedes%22%7D%5D%7D%7D,%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22BMW%22%7D%5D%7D%7D,%7B%22time%22:%222021-08-21+2022-08-21%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Audi%22%7D%5D%7D%7D%5D,%22resolution%22:%22COUNTRY%22,%22locale%22:%22en-US%22,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22dataMode%22:%22PERCENTAGES%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHsLufGv3pfQ2BxPNw8dI-wIKkr_l
https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=-180&req=%7B%22restriction%22:%7B%22geo%22:%7B%7D,%22time%22:%222021-08-21+2022-08-21%22,%22originalTimeRangeForExploreUrl%22:%22today+12-m%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22BMW%22%7D%5D%7D%7D,%22keywordType%22:%22QUERY%22,%22metric%22:%5B%22TOP%22,%22RISING%22%5D,%22trendinessSettings%22:%7B%22compareTime%22:%222020-08-20+2021-08-20%22%7D,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22language%22:%22en%22,%22userCountryCode%22:%22UA%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHv29rVS6IxcWgrBl8_9SJRhk_ORI
https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=-180&req=%7B%22restriction%22:%7B%22geo%22:%7B%7D,%22time%22:%222021-08-21+2022-08-21%22,%22originalTimeRangeForExploreUrl%22:%22today+12-m%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22BMW%22%7D%5D%7D%7D,%22keywordType%22:%22QUERY%22,%22metric%22:%5B%22TOP%22,%22RISING%22%5D,%22trendinessSettings%22:%7B%22compareTime%22:%222020-08-20+2021-08-20%22%7D,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22language%22:%22en%22,%22userCountryCode%22:%22UA%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHv29rVS6IxcWgrBl8_9SJRhk_ORI
https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=-180&req=%7B%22restriction%22:%7B%22geo%22:%7B%7D,%22time%22:%222021-08-21+2022-08-21%22,%22originalTimeRangeForExploreUrl%22:%22today+12-m%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22BMW%22%7D%5D%7D%7D,%22keywordType%22:%22QUERY%22,%22metric%22:%5B%22TOP%22,%22RISING%22%5D,%22trendinessSettings%22:%7B%22compareTime%22:%222020-08-20+2021-08-20%22%7D,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22language%22:%22en%22,%22userCountryCode%22:%22UA%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHv29rVS6IxcWgrBl8_9SJRhk_ORI
https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=-180&req=%7B%22restriction%22:%7B%22geo%22:%7B%7D,%22time%22:%222021-08-21+2022-08-21%22,%22originalTimeRangeForExploreUrl%22:%22today+12-m%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Mercedes%22%7D%5D%7D%7D,%22keywordType%22:%22QUERY%22,%22metric%22:%5B%22TOP%22,%22RISING%22%5D,%22trendinessSettings%22:%7B%22compareTime%22:%222020-08-20+2021-08-20%22%7D,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22language%22:%22en%22,%22userCountryCode%22:%22UA%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHggCzy6uP3PrFpk88Ligm599j2Sk
https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=-180&req=%7B%22restriction%22:%7B%22geo%22:%7B%7D,%22time%22:%222021-08-21+2022-08-21%22,%22originalTimeRangeForExploreUrl%22:%22today+12-m%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Mercedes%22%7D%5D%7D%7D,%22keywordType%22:%22QUERY%22,%22metric%22:%5B%22TOP%22,%22RISING%22%5D,%22trendinessSettings%22:%7B%22compareTime%22:%222020-08-20+2021-08-20%22%7D,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22language%22:%22en%22,%22userCountryCode%22:%22UA%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHggCzy6uP3PrFpk88Ligm599j2Sk
https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=-180&req=%7B%22restriction%22:%7B%22geo%22:%7B%7D,%22time%22:%222021-08-21+2022-08-21%22,%22originalTimeRangeForExploreUrl%22:%22today+12-m%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Mercedes%22%7D%5D%7D%7D,%22keywordType%22:%22QUERY%22,%22metric%22:%5B%22TOP%22,%22RISING%22%5D,%22trendinessSettings%22:%7B%22compareTime%22:%222020-08-20+2021-08-20%22%7D,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22language%22:%22en%22,%22userCountryCode%22:%22UA%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHggCzy6uP3PrFpk88Ligm599j2Sk
https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=-180&req=%7B%22restriction%22:%7B%22geo%22:%7B%7D,%22time%22:%222021-08-21+2022-08-21%22,%22originalTimeRangeForExploreUrl%22:%22today+12-m%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Audi%22%7D%5D%7D%7D,%22keywordType%22:%22QUERY%22,%22metric%22:%5B%22TOP%22,%22RISING%22%5D,%22trendinessSettings%22:%7B%22compareTime%22:%222020-08-20+2021-08-20%22%7D,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22language%22:%22en%22,%22userCountryCode%22:%22UA%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHjukYobY26CMug0kICcK-hxqVSwD
https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=-180&req=%7B%22restriction%22:%7B%22geo%22:%7B%7D,%22time%22:%222021-08-21+2022-08-21%22,%22originalTimeRangeForExploreUrl%22:%22today+12-m%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Audi%22%7D%5D%7D%7D,%22keywordType%22:%22QUERY%22,%22metric%22:%5B%22TOP%22,%22RISING%22%5D,%22trendinessSettings%22:%7B%22compareTime%22:%222020-08-20+2021-08-20%22%7D,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22language%22:%22en%22,%22userCountryCode%22:%22UA%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHjukYobY26CMug0kICcK-hxqVSwD
https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=-180&req=%7B%22restriction%22:%7B%22geo%22:%7B%7D,%22time%22:%222021-08-21+2022-08-21%22,%22originalTimeRangeForExploreUrl%22:%22today+12-m%22,%22complexKeywordsRestriction%22:%7B%22keyword%22:%5B%7B%22type%22:%22BROAD%22,%22value%22:%22Audi%22%7D%5D%7D%7D,%22keywordType%22:%22QUERY%22,%22metric%22:%5B%22TOP%22,%22RISING%22%5D,%22trendinessSettings%22:%7B%22compareTime%22:%222020-08-20+2021-08-20%22%7D,%22requestOptions%22:%7B%22property%22:%22%22,%22backend%22:%22IZG%22,%22category%22:0%7D,%22language%22:%22en%22,%22userCountryCode%22:%22UA%22,%22userConfig%22:%7B%22userType%22:%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_UEAAAAAYwOuHjukYobY26CMug0kICcK-hxqVSwD
"""#
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