Руководство для начинающих по регулярным выражениям

Вы когда-нибудь пытались найти повторяющийся шаблон в тексте? Возможно, вы использовали функцию поиска в вашем браузере или текстовом редакторе, но когда необходимо найти что-то более сложное, это может быть похоже на поиск иголки в стоге сена.
К счастью, есть способ выделять точные шаблоны в тексте вплоть до символа. Это называется регулярными выражениями (RegEx), и оно позволяет вам стать мастером поиска в тексте.
Также читайте: Как использовать регулярные выражения для повышения продуктивности в повседневных задачах
Где я могу использовать RegEx?
Хотя Unix и Linux сделали их популярными, регулярные выражения доступны в различных пакетах, включая Microsoft Word.

Регулярные выражения, прежде всего, используются в нескольких известных программах Linux, включая grep, Awk и Sed.
Например, вы можете захотеть проверить USB-устройства на вашем ПК. Используя lspci, вы увидите список всех устройств, и вам придется самостоятельно находить USB-записи. Вместо этого вы можете использовать следующее, чтобы показать только USB-устройства:
lspci|grep"USB"Это самый простой пример работы RegEx. Это самый популярный способ использования регулярных выражений в терминале, но не единственный. Сегодня вы можете найти поддержку RegEx во многих различных типах программного обеспечения, от текстовых редакторов до файловых менеджеров.
Поиск шаблонов
Вы, вероятно, использовали символ *, который действует как подстановка при выборе файлов или папок в терминале. Например, чтобы вывести все JPG-файлы в папке, вы можете использовать:
ls*.jpgЭквивалент RegEx выше будет таким:
ls|grep-E"\.jpg"
Чтобы искать как jpg, так и png файлы, используйте:
ls|grep-E"(\.jpg|\.png)"Диапазоны
Если вы хотите искать определенный диапазон символов вместо шаблона, вы можете сделать это, определив его в квадратных скобках. Если, например, вы используете [a-z] в качестве своего шаблона, это будет соответствовать любой строке, состоящей из строчных букв алфавита.
Как вы, возможно, догадались, [A-Z] выберет только заглавные буквы. Чтобы выбрать любой диапазон букв как в верхнем, так и в нижнем регистре, выражение изменится на [a-zA-Z].
Чтобы найти определенное количество вхождений вашего шаблона, вы можете указать это в фигурных скобках. {5} вернет пять вхождений вашего шаблона. Вы также можете использовать диапазоны чисел, так что {5,10} предоставит вам от пяти до десяти вхождений.
МетаСимволы
В регулярных выражениях вы также можете искать части строки с помощью двух символов, называемых метасимволами. Они похожи на те подстановочные совпадения, которые вы могли использовать в оболочке.
Основной из них — это простой знак точки, который обозначает любой другой отдельный символ. Если вы используете шаблон c.ll, он будет соответствовать «cell», но также «cull» и «call».
Добавив звездочку после точки, вы можете использовать ее для совпадения с бесконечным количеством символов. Например, .*board будет совпадать как с «keyboard», так и с «skateboard», даже если «key» и «skate» имеют разное количество букв.
Экранирование
Вы, возможно, заметили, что в нашем примере, где мы выбирали разные типы файлов изображений, мы использовали обратные слэши перед точкой (“.jpg”). Так вы экранируете специальные символы в RegEx.
Если бы мы их не использовали, наш шаблон соответствовал бы не только расширениям файлов, таким как «.jpg» и «.png», но также совпадал бы с «ajpg» и «opng». Помните, . — это подстановка, которая соответствует любому символу.
Якоря и границы
Якоря и границы позволяют вам более точно определить, что вы ищете.
Чтобы найти только отдельное слово «компьютер», без каких-либо других символов перед или после, вы должны определить шаблон как \.
Вы также можете искать конкретно шаблоны, которые появляются в начале или в конце строки. Это достигается с помощью символов ^ и $, соответственно.
Таким образом, если вы хотите найти только записи, где слово «компьютер» появляется в начале строки, ваш шаблон будет выглядеть как ^computer. Для противоположного случая, когда оно находится в конце строки, шаблон изменится на computer$.
Это простые правила RegEx, которые вы также можете комбинировать, чтобы точно находить искомые шаблоны. Вы можете искать диапазоны символов в начале строки или чередующиеся слова в конце, конкретные даты или диапазон годов, используя одну строку текста.
Не забудьте ознакомиться с нашей шпаргалкой по регулярным выражениям, чтобы освоить регулярные выражения.