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

Intro To Regex Featured

Вы когда-нибудь пытались найти повторяющийся шаблон в тексте? Возможно, вы использовали функцию поиска в вашем браузере или текстовом редакторе, но когда необходимо найти что-то более сложное, это может быть похоже на поиск иголки в стоге сена.

К счастью, есть способ выделять точные шаблоны в тексте вплоть до символа. Это называется регулярными выражениями (RegEx), и оно позволяет вам стать мастером поиска в тексте.

Также читайте: Как использовать регулярные выражения для повышения продуктивности в повседневных задачах

Где я могу использовать RegEx?

Хотя Unix и Linux сделали их популярными, регулярные выражения доступны в различных пакетах, включая Microsoft Word.

regular-expressions

Регулярные выражения, прежде всего, используются в нескольких известных программах Linux, включая grep, Awk и Sed.

Например, вы можете захотеть проверить USB-устройства на вашем ПК. Используя lspci, вы увидите список всех устройств, и вам придется самостоятельно находить USB-записи. Вместо этого вы можете использовать следующее, чтобы показать только USB-устройства:

lspci|grep"USB"

Это самый простой пример работы RegEx. Это самый популярный способ использования регулярных выражений в терминале, но не единственный. Сегодня вы можете найти поддержку RegEx во многих различных типах программного обеспечения, от текстовых редакторов до файловых менеджеров.

Поиск шаблонов

Вы, вероятно, использовали символ *, который действует как подстановка при выборе файлов или папок в терминале. Например, чтобы вывести все JPG-файлы в папке, вы можете использовать:

ls*.jpg

Эквивалент RegEx выше будет таким:

ls|grep-E"\.jpg"

Intro To Regex Filter Jpgs

Чтобы искать как 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, которые вы также можете комбинировать, чтобы точно находить искомые шаблоны. Вы можете искать диапазоны символов в начале строки или чередующиеся слова в конце, конкретные даты или диапазон годов, используя одну строку текста.

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