Шаблоны регулярных выражений и классы символов
\d, \w, \s, ., ^, $, +, *, ?, {n,m}, классы символов [a-z], отрицание [^...].
«Шаблоны регулярных выражений и классы символов» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Зачем нужны регулярные выражения в ИИ для работы с текстом
Работа ИИ с текстом начинается с неструктурированного исходного текста. Регулярные выражения (regex) — это компактный язык для поиска и извлечения шаблонов: номеров телефонов, дат, хэштегов и URL. С их помощью можно очистить и структурировать текст перед передачей модели.
В этом курсе рассматриваются шаблоны, модуль re, группы и настоящий конвейер очистки текста.
Литеральные символы
Простейший шаблон — это буквальный текст: он точно сопоставляется с указанными символами. По умолчанию регулярные выражения учитывают регистр.
cat сопоставляется с «cat» внутри строки «the cat sat», но не с «Cat».
import re
print(re.findall("cat", "the cat sat on a cat mat"))
# ["cat", "cat"]Метасимвол точки
Точка . сопоставляется с любым одиночным символом, кроме символа новой строки. Это подстановочный символ.
c.t сопоставляется с «cat», «cot» и «c9t» — с любой последовательностью, в которой есть c, затем один символ, а затем t.
import re
print(re.findall("c.t", "cat cot cut c@t"))
# ["cat", "cot", "cut", "c@t"]Классы цифр, слов и пробельных символов
Сокращённые классы символов охватывают распространённые группы:
\d— цифра (0–9)\w— символ слова (буква, цифра или символ подчёркивания)\s— пробельный символ (пробел, табуляция или новая строка)
import re
print(re.findall("\d", "a1b2c3")) # ["1", "2", "3"]
print(re.findall("\w", "a_1!")) # ["a", "_", "1"]
print(re.findall("\s", "a b\tc")) # [" ", "\t"]Отрицание классов
Версии в верхнем регистре задают отрицание класса:
\D— любой символ, который не является цифрой\W— символ, который не является символом слова\S— непробельный символ
import re
print(re.findall("\D", "a1b2")) # ["a", "b"]
print(re.findall("\S", "a b c")) # ["a", "b", "c"]Пользовательские наборы символов с [ ]
Квадратные скобки задают собственный набор: сопоставление выполняется с любым одним символом, указанным внутри. Диапазоны задаются с помощью дефиса.
[aeiou]— любая гласная[A-Za-z]— любая буква[0-9]— любая цифра (то же, что и\d)
import re
print(re.findall("[A-Za-z]", "ab12CD")) # letters only
print(re.findall("[aeiou]", "hello")) # ["e", "o"]Отрицание наборов с помощью [^ ]
Каретка внутри скобок задаёт отрицание набора: сопоставление выполняется с любым символом, который в наборе не указан.
[^abc] сопоставляется с любым символом, кроме a, b и c. (Каретка вне скобок является якорем, который рассматривается далее.)
import re
print(re.findall("[^aeiou ]", "hello world"))
# consonants: ["h", "l", "l", "w", "r", "l", "d"]Якоря: ^ и $
Якоря сопоставляются с позициями, а не с символами:
^— начало строки (или строки текста)$— конец строки (или строки текста)
^Hello сопоставляется только в том случае, если текст начинается с «Hello».
import re
print(bool(re.search("^Hello", "Hello world"))) # True
print(bool(re.search("world$", "Hello world"))) # True
print(bool(re.search("^world", "Hello world"))) # FalseКвантификаторы: + * ?
Квантификаторы указывают, сколько раз повторяется предшествующий элемент:
+— один или более раз*— ноль или более раз?— ноль или один раз (необязательно)
import re
print(re.findall("\d+", "abc 123 de 45")) # ["123", "45"]
print(re.findall("ab*", "a ab abb")) # ["a", "ab", "abb"]
print(re.findall("colou?r", "color colour")) # both matchКвантификатор диапазона {n,m}
Фигурные скобки задают точное количество или диапазон:
{3}— ровно 3{2,4}— от 2 до 4{2,}— 2 или более
Это особенно удобно для элементов фиксированной длины, например почтовых индексов ZIP или частей телефонных номеров.
import re
print(re.findall("\d{3}", "12 345 6789")) # ["345", "678"]
print(re.findall("\d{2,4}", "1 22 3333 55555"))Объединение элементов
В реальных шаблонах объединяются классы, наборы, якоря и квантификаторы. Следующий шаблон сопоставляется с простым номером телефона US, например 555-123-4567:
\d{3}-\d{3}-\d{4} — три цифры, дефис, три цифры, дефис, четыре цифры.
import re
text = "Call 555-123-4567 or 999-888-7777"
print(re.findall("\d{3}-\d{3}-\d{4}", text))
# ["555-123-4567", "999-888-7777"]Быстрая проверка: квантификаторы
Вы хотите сопоставить одну или несколько цифр, идущих подряд.
Итоги: шаблоны и классы символов
Теперь Вы знаете основные элементы регулярных выражений:
- Литеральные символы и подстановочный символ
. - Классы
\d \w \sи их отрицания\D \W \S - Пользовательские наборы
[A-Za-z]и наборы с отрицанием[^abc] - Якоря
^и$ - Квантификаторы
+ * ?и диапазоны{n,m}
Далее: функции модуля Python re.
Часто задаваемые вопросы
Урок «Шаблоны регулярных выражений и классы символов» бесплатный?
Да — полный текст урока «Шаблоны регулярных выражений и классы символов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Шаблоны регулярных выражений и классы символов»?
\d, \w, \s, ., ^, $, +, *, ?, {n,m}, классы символов [a-z], отрицание [^...]. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Шаблоны регулярных выражений и классы символов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Шаблоны регулярных выражений и классы символов
- Модуль re: поиск, сопоставление, поиск всех совпадений и замена
- Группы захвата и именованные группы
- Очистка текста для искусственного интеллекта с помощью регулярных выражений