0Pricing
Linux Command Line & Bash Scripting Mastery · Урок

Введение в регулярные выражения (Regex)

Разберитесь в синтаксисе и основных понятиях регулярных выражений для мощного поиска по текстовым шаблонам.

«Введение в регулярные выражения (Regex)» — бесплатный урок Linux Command Line & Bash Scripting Mastery на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Command Line & Bash Scripting Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Command Line & Bash Scripting Mastery содержит 4 уроков всего.

Что такое регулярные выражения?

Регулярные выражения, часто сокращённо называемые Regex, — это мощные шаблоны для поиска и обработки текста.

Представьте их как расширенные поисковые запросы, которые могут находить определённые последовательности, символы и даже позиции внутри текста.

Они широко используются в программировании, написании сценариев и консольных инструментах Linux, таких как grep, sed и awk.

Поиск точного совпадения символов

Самое простое регулярное выражение ищет точные символы, указанные буквально. Если выполнить поиск по строке «apple», будет найдено именно «apple».

Используем команду grep (Global Regular Expression Print), чтобы продемонстрировать такой базовый поиск совпадений.

echo "apple" > fruits.txt
echo "banana" >> fruits.txt
echo "pineapple" >> fruits.txt
grep "apple" fruits.txt
rm fruits.txt

Точка: любой отдельный символ

Точка (.) — это специальный символ, который соответствует любому отдельному символу, кроме символа новой строки.

Она действует как подстановочный знак для одной позиции. Например, c.t соответствует строкам "cat", "cot" и "cut".

echo "cat" > words.txt
echo "cot" >> words.txt
echo "cut" >> words.txt
echo "coat" >> words.txt
grep "c.t" words.txt
rm words.txt

Звёздочка: ноль или более (*)

Звёздочка (*) — это квантификатор, который соответствует нулю или более вхождениям непосредственно предшествующего символа или группы.

Например, colou*r соответствует строкам "color" (ноль символов 'u') и "colour" (один символ 'u').

echo "color" > spellings.txt
echo "colour" >> spellings.txt
echo "colouuur" >> spellings.txt
echo "cold" >> spellings.txt
grep "colou*r" spellings.txt
rm spellings.txt

Знак плюс: один или более (+)

Знак плюс (+) соответствует одному или более вхождениям предшествующего символа или группы.

В отличие от *, элемент должен встретиться хотя бы один раз. Поэтому go+gle соответствует строкам "google" и "gooogle", но не соответствует строке "ggle".

Примечание: Чтобы +, ? и {} напрямую работали с grep, часто нужно использовать параметр -E для расширенных регулярных выражений.

echo "google" > search.txt
echo "goooogle" >> search.txt
echo "ggle" >> search.txt
grep -E "go+gle" search.txt
rm search.txt

Вопросительный знак: ноль или один (?)

Вопросительный знак (?) соответствует нулю или одному вхождению предшествующего символа или группы.

Он делает символ необязательным. Например, colou?r соответствует строкам "color" (ноль символов 'u') и "colour" (один символ 'u').

echo "color" >> spellings.txt
echo "colour" >> spellings.txt
echo "colouuur" >> spellings.txt
grep -E "colou?r" spellings.txt
rm spellings.txt

Якоря: начало (^) и конец ($)

Якоря не соответствуют символам — они соответствуют определённым позициям в тексте.

  • ^ соответствует началу строки.
  • $ соответствует концу строки.

Пример: ^apple соответствует строке "apple" только в том случае, если она находится в начале строки. apple$ соответствует строке "apple" только в конце строки.

echo "apple pie" > menu.txt
echo "fresh apple" >> menu.txt
echo "apple" >> menu.txt
grep -E "^apple" menu.txt
grep -E "apple$" menu.txt
rm menu.txt

Классы символов: квадратные скобки ([])

Квадратные скобки ([]) задают класс символов, соответствующий любому отдельному символу из указанного набора.

  • [aeiou] соответствует любой отдельной гласной.
  • [0-9] соответствует любой отдельной цифре.
  • [a-zA-Z] соответствует любой отдельной букве.

Также можно инвертировать класс с помощью [^...]; например, [^aeiou] соответствует любому символу, который НЕ является гласной.

echo "cat" > animals.txt
echo "bat" >> animals.txt
echo "rat" >> animals.txt
echo "cot" >> animals.txt
grep -E "[cb]at" animals.txt
grep -E "[^cbr]at" animals.txt
rm animals.txt

Квантификаторы: фигурные скобки ({})

Фигурные скобки ({}) — это квантификаторы, задающие точное количество повторений предшествующего символа или группы.

  • a{3} соответствует строке "aaa"
  • a{2,} соответствует строкам "aa", "aaa", "aaaa" и т. д. (не менее 2)
  • a{2,4} соответствует строкам "aa", "aaa", "aaaa" (от 2 до 4)

Не забывайте использовать grep -E для этих квантификаторов.

echo "helllo" > greetings.txt
echo "hello" >> greetings.txt
echo "helo" >> greetings.txt
grep -E "hel{2,3}o" greetings.txt
rm greetings.txt

Быстрая проверка регулярных выражений

Рассмотрим следующие строки:

  • banana
  • banaana
  • banaanana
  • bna

Какое регулярное выражение будет соответствовать только строкам "banana" и "banaana"?

Повторение основ регулярных выражений

Вы изучили основы регулярных выражений!

  • Регулярные выражения используют шаблоны для поиска и обработки текста.
  • Литеральные символы соответствуют самим себе.
  • Специальные символы, такие как ., *, +, ?, ^, $, [] и {}, позволяют выполнять мощный поиск по шаблонам.

Далее вы примените эти шаблоны для расширенного поиска текста с помощью команды grep и её различных параметров.

Часто задаваемые вопросы

Урок «Введение в регулярные выражения (Regex)» бесплатный?

Да — полный текст урока «Введение в регулярные выражения (Regex)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Command Line & Bash Scripting Mastery, подпишись на CoddyKit PRO. Курс Linux Command Line & Bash Scripting Mastery содержит 4 уроков всего.

Чему я научусь в уроке «Введение в регулярные выражения (Regex)»?

Разберитесь в синтаксисе и основных понятиях регулярных выражений для мощного поиска по текстовым шаблонам. Ты практикуешь Linux Command Line & Bash Scripting Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Linux Command Line & Bash Scripting Mastery?

Предыдущий опыт не требуется. Linux Command Line & Bash Scripting Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Введение в регулярные выражения (Regex)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Linux Command Line & Bash Scripting Mastery?

Да. Каждый урок Linux Command Line & Bash Scripting Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Введение в регулярные выражения (Regex)
  2. Расширенный grep с регулярными выражениями
  3. Сочетание регулярных выражений с sed и awk
  4. Группы захвата, обратные ссылки и подстановка
← Назад к Linux Command Line & Bash Scripting Mastery