Вы когда-нибудь пытались найти повторяющийся шаблон в тексте? Возможно, вы использовали что-то вроде функции поиска в своем браузере или текстовом редакторе, но когда вам нужно найти что-то более сложное, это может быть похоже на поиск иголки в пресловутом стоге сена.
К счастью, есть способ выделить точные закономерности в тексте вплоть до символа. Он называется регулярными выражениями (RegEx) и позволяет вам стать мастером поиска по тексту.
Читайте также: Как использовать регулярные выражения для повышения производительности в повседневных задачах
Где я могу использовать RegEx?
Хотя Unix и Linux сделали их популярными, регулярные выражения доступны в различных пакетах, включая Microsoft Word.
![обычные выражения](https://saintist.ru/wp-content/uploads/2024/05/regular-expressions2.jpg)
Регулярные выражения чаще всего используются в нескольких известных программах Linux, включая grep
, Awk
и Sed
.
Например, вы можете проверить USB-устройства на вашем компьютере. Используя Contentsls
Где я могу использовать RegEx?
ойств, и вам придется самостоятельно найти записи USB. Вместо этого вы можете использовать следующее, чтобы отображать только USB-устройства:
lspci | grep "USB"
Это простейший пример использования RegEx в действии. Это самый популярный способ использования регулярных выражений в терминале, но не единственный. Сегодня поддержку RegEx можно найти во многих типах программного обеспечения, от текстовых редакторов до файловых менеджеров.
Нахождение закономерностей
Возможно, вы использовали символ *
, который действует как подстановочный знак при выборе файлов или папок в терминале. Например, чтобы вывести список всех файлов JPG в папке, вы можете использовать:
ls *.jpg
Эквивалент приведенного выше RegEx:
ls | grep -E "\.jpg"
![Введение в фильтр регулярных выражений в формате JPG](https://saintist.ru/wp-content/uploads/2024/05/Intro-to-regex-filter-jpgs.jpg)
Для поиска файлов в формате jpg и png используйте:
ls | grep -E "(\.jpg|\.png)"
Диапазоны
Если вы хотите искать определенный диапазон символов вместо шаблона, вы можете сделать это, заключив его в скобки. Если, например, вы используете [a-z]
в качестве шаблона, он будет соответствовать любой строке, состоящей из любых строчных букв алфавита.
Как вы уже догадались, [A-Z]
будет выбирать только заглавные буквы. Чтобы выбрать любой диапазон букв, как в
Нахождение закономерностей
ыражение изменится на[a-zA-Z]
.
Чтобы найти определенное количество экземпляров вашего шаблона, вы можете указать его в фигурных скобках. {5}
вернет пять вхождений вашего шаблона. Вы также можете использовать диапазоны чисел, поэтому {5,10}
предоставит вам от пяти до десяти экземпляров.
Метасимволы
В регулярных выражениях вы также можете искать части строки с двумя символами, называемыми метасимволами. Они аналогичны подстановочным знакам, которые вы могли использовать в оболочке.
Основной является простая точка, которая обозначает любой другой одиночный символ. Если вы использовали шаблон c.ll
, он будет соответствовать «ячейке», а также «отбраковке» и «вызову».
Введя звездочку после точки, вы можете использовать ее для сопоставления бесконечному числу символов. Например, .*board
будет соответствовать как «клавиатуре», так и «скейтборду». даже если в словах «ключ» и «скейт» разное количество букв.
Побег
Вы могли заметить, чт
Диапазоны
где мы выбрали разные типы файлов изображений, мы использовали обратную косую черту перед точкой («\.jpg»). Вот как можно экранировать специальные символы в RegEx.Если бы мы их не использовали, наш шаблон соответствовал бы не только расширениям файлов (строкам типа «.jpg» и «.png»), но также соответствовал бы «ajpg» и «opng». Помните, что .
– это подстановочный знак, который соответствует любому символу.
Якоря и границы
Якоря и границы позволяют более точно определить, что вы ищете.
Чтобы найти только отдельное слово «компьютер» без каких-либо других символов до или после него, вам следует определить шаблон как \<computer\>
.
Вы также можете выполнять поиск по шаблонам, которые появляются в начале или конце строки. Это достигается с помощью символов ^
и $
соответственно.
Итак, если вы хотите найти только те записи, в которых слово «компьютер» встречается в начале строки, ваш шаблон будет выглядеть как ^computer
. Напротив, когда он находится в конце строки, шаблон изменится на computer$
.
Это простые правила RegEx, которые вы также можете комбинировать, чтобы найти именно те шаблоны, которые вам нужны. Вы можете искать диапазоны символов в начале строки или чередующ
Метасимволы
определенные даты или диапазон лет, используя одну строку текста.Не забудьте просмотреть наш Шпаргалка по регулярным выражениям , чтобы освоить регулярные выражения.