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
.