@daminik00

Регулярные выражения в Swift?

У меня есть текст в котором через регулярку на js я отбираю по такому выражению /products_and_categories(.*?)]}/g;
Мне надо реализовать это на Swift, но я не могу разобраться.
Кидать ссылку на доки apple по NSRegularExpression не надо. Ибо я все это читал, но знаний, пока, не хватает, что бы понять
Спасибо!
  • Вопрос задан
  • 2318 просмотров
Решения вопроса 1
doublench21
@doublench21 Куратор тега Swift
Swift 4 Xcode 9.0
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)!)
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 апр. 2024, в 00:31
1000 руб./за проект
17 апр. 2024, в 00:13
800 руб./за проект
17 апр. 2024, в 00:06
240000 руб./за проект