Ответ
Регулярное выражение (RegEx) — это специальная текстовая строка, описывающая шаблон поиска в тексте. Это мощный инструмент для поиска, замены и валидации строк.
Основные элементы синтаксиса:
d— Любая цифра.w— Буквенно-цифровой символ или подчеркивание.[a-z]— Диапазон символов (отaдоz).+— Одно или более повторений предыдущего элемента.*— Ноль или более повторений.^и$— Начало и конец строки соответственно.(a|b)— Альтернатива (aилиb).
Пример в Swift (поиск чисел в строке):
let text = "Заказ №12345 на сумму 99.99$"
let pattern = #"d+(.d+)?"# // Ищет целые и дробные числа
if let regex = try? NSRegularExpression(pattern: pattern) {
let matches = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))
for match in matches {
if let range = Range(match.range, in: text) {
print("Найдено: (text[range])") // 12345, 99.99
}
}
}
Типичное применение:
- Валидация: Email, телефоны, пароли.
- Парсинг: Извлечение данных из логов или неструктурированного текста.
- Поиск и замена: Сложные текстовые операции в редакторах кода.
Ответ 18+ 🔞
Ну, слушай, смотри, регулярные выражения — это такая, блядь, хитрая жопа, которая ищет по шаблону в тексте. Представь себе волшебный фильтр, который вылавливает из кучи букв и цифр только то, что тебе надо. Мощнейшая штука, но и мозг сломать можно, если неаккуратно.
Основные приколы синтаксиса, которые надо знать:
d— Цифра, одна любая. Просто цифра, блядь.w— Буква, цифра или эта подчеркивающая палочка. Буквенно-цифровой, короче.[a-z]— Диапазон, вот это вот отaдоz. Можно и[0-9], и[а-я], если надо.+— Значит, предыдущая хрень должна быть одна или больше. Жадный символ, сука.*— А это ноль или больше. То есть может и вообще не быть, и это норма.^и$— Начало строки и конец строки. Чтобы привязать шаблон к краям, а не искать где попало.(a|b)— Либоa, либоb. Альтернатива, выбор, понимаешь?
Вот тебе живой пример на Swift (чтобы найти все числа в строке):
let text = "Заказ №12345 на сумму 99.99$"
let pattern = #"d+(.d+)?"# // Ищет и целые, и дробные числа, типа 99.99
if let regex = try? NSRegularExpression(pattern: pattern) {
let matches = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))
for match in matches {
if let range = Range(match.range, in: text) {
print("Найдено: (text[range])") // Выведет: 12345, 99.99
}
}
}
А применяется эта магия вот где, обычно:
- Валидация, ёпта: Проверить, что email не кривой, телефон похож на телефон, а пароль не совсем уж говно.
- Парсинг: Вытащить данные из какого-нибудь лога или текстового файла, где всё в кучу набросано.
- Поиск и замена: В продвинутых редакторах кода — чтобы не менять всё вручную, а сделать разом по хитрому правилу. Просто овердохуища полезная вещь, если разобраться.