import Foundation
// Дополним String для простоты работы с NSRegularExpression
extension String {
// Вычислимое св-во, которое возвращает NSRange строки String
var toNSRange: NSRange { return NSMakeRange(0, self.utf16.count) }
// Метод возвращающий String по заданному NSRange
func substringFromNSRange(with nsrange: NSRange) -> String? {
guard let range = Range(nsrange) else { return nil }
let start = String.UTF16Index(encodedOffset: range.lowerBound)
let end = String.UTF16Index(encodedOffset: range.upperBound)
return String(self.utf16[start..<end])
}
}
var htmlContext = "products_and_categories(123123)]}"
let regExp = try? NSRegularExpression(pattern: "products_and_categories(.*?)\\]\\}")
let matches = regExp?.matches(in: htmlContext, range: htmlContext.toNSRange)
for match in matches! {
print(htmlContext.substringFromNSRange(with: match.range)!)
}