Использование регулярных выражений

Swift:
Использование регулярных выражений

Как использовать:

В Swift для работы с regex используется класс NSRegularExpression. Вы определяете шаблон, создаете объект regex, а затем используете его для поиска или замены текста. Вот базовый пример:

import Foundation

let input = "Позвони мне по номеру 555-1234 или 555-5678."
let pattern = "\\d{3}-\\d{4}" // Соответствует шаблону типа 555-1234

do {
    let regex = try NSRegularExpression(pattern: pattern)
    let matches = regex.matches(in: input, range: NSRange(input.startIndex..., in: input))
    
    for match in matches {
        if let range = Range(match.range, in: input) {
            let phoneNumber = String(input[range])
            print("Найденный номер телефона: \(phoneNumber)")
        }
    }
} catch {
    print("Ошибка regex: \(error.localizedDescription)")
}

Пример вывода:

Найденный номер телефона: 555-1234
Найденный номер телефона: 555-5678

Погружение в тему

Регулярные выражения существуют с 1950-х годов, возникнув в теории формальных языков и получив широкое распространение в инструментах Unix. В Swift мы используем класс NSRegularExpression, унаследованный от Objective-C, который опирается на библиотеку ICU для поддержки Unicode.

Альтернативами regex в Swift являются использование методов contains, split или range(of:) класса String для простых случаев. Для более сложного поиска шаблонов Swift не предлагает встроенных альтернатив regex.

При реализации regex крайне важно оптимизировать шаблон для избежания медленного поиска, особенно при работе с большими объемами текста. Кроме того, помните, что операции regex могут генерировать исключения, поэтому всегда обрабатывайте их с помощью блоков try-catch.

Смотрите также