Регулярные выражения: создание шаблонов для обработки текста

Введение

Регулярное выражение (регулярное выражение) — это последовательность символов, определяющая шаблон поиска, в основном для использования при сопоставлении шаблонов со строками или сопоставлении строк, т. е. операций «найти и заменить».

Что делает его таким особенным?

Регулярные выражения особенно полезны для определения фильтров. Они обеспечивают гибкий способ поиска, извлечения и обработки строк на основе определенных шаблонов.

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

Давайте поговорим о синтаксисе

Синтаксис регулярных выражений представляет собой комбинацию, назовем это последовательностью обычных символов и специальных символов, называемых метасимволами. Например:

  • ‘.’ (точка): соответствует любому одиночному символу, кроме новой строки.
  • ‘*’ (звездочка): соответствует нулю или более вхождений предшествующего символа или группы.

Распространенное использование регулярных выражений

Проверка данных

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

Пример:

Веб-скраппинг

При извлечении данных с веб-сайтов можно использовать регулярные выражения для извлечения определенных фрагментов информации на основе их шаблонов. Это особенно полезно при работе со структурированными данными, такими как HTML, XML или JSON.

Обработка текста

Регулярные выражения можно использовать для управления текстом. Они позволяют выполнять операции поиска и замены, позволяя находить определенные шаблоны и заменять их нужным текстом. Это полезно для таких задач, как очистка данных.

Как писать регулярные выражения

Ранее я говорил о метасимволах, они, по сути, являются строительными блоками регулярных выражений, и мы рассмотрим, что делает каждый из них. Метасимволы можно разделить на классы в соответствии с тем, что каждый из них делает:

  1. Классы персонажей:

Классы символов заключены в квадратные скобки. Он позволяет указать набор символов, который может соответствовать одному символу в этой позиции.

Пример:

  • [0–9]: соответствует любой цифре от 0 до 9.
  • [a-z]: соответствует любой строчной букве от a до z.
  • [A-Z]: соответствует любой заглавной букве от A до Z.
  • [aeiou]: Соответствует любому гласному символу. (Я рассмеялся, когда увидел это, так как это дает атмосферу начальной школы)
\s: matches any whitespace characters such as space and tab.
\S: matches any non-whitespace characters.
\d: matches any digit character.
\D: matches any non-digit characters.
\w : matches any word character (basically alpha-numeric)
\W: matches any non-word character.
\b: matches any word boundary (this would include spaces, dashes, commas, semi-colons, etc.
[set_of_characters]: Matches any single character in set_of_characters. By default, the match is case-sensitive.

2. Якоря:

Якоря — это метасимволы, которые позволяют сопоставлять позиции во входной строке. Примеры:

'^' (вставка): соответствует началу строки или строки. Например, шаблон «^Start» соответствует, если «Start» находится в начале строки или строки.

A caret (^) at the beginning of a regex will invert the regex.

For example /[^a-zA-Z ]/g would match all characters that
are NOT letters of the alphabet.

Ниже приведена ссылка на переполнение стека, где некоторые опытные разработчики более подробно говорили о каретке.



‘$’ (знак доллара): соответствует концу строки или строки. Например, шаблон «end$» соответствует, если «end» находится в конце строки или строки.

Example : -\d{3}$  will match with patterns like "-333" in "-901-333".

3. Квантификаторы:

Квантификаторы используются для указания количества вхождений шаблона. Вот несколько часто используемых квантификаторов:

  • ‘*’ (звездочка): соответствует нулю или более вхождений предшествующего символа или группы.
Example : The regular expression ab*c will give ac, abc, abbc, abbbc….and so on 
  • «+» (плюс): соответствует одному или нескольким вхождениям предыдущего символа или группы.
Example : The regular expression ab+c will give abc, abbc,
abbc, … and so on.
  • '?' (вопросительный знак): соответствует нулю или одному вхождению предшествующего символа или группы.
Example : 
We may write the format for document file as – “docx?”
The ‘?’ tells the computer that x may or may not be 
present in the name of file format.
  • ‘{n,}’ (фигурные скобки): соответствует как минимум n вхождениям предшествующего символа или группы.
Example : {2} means that the preceding character is to be repeated 2 
times, {min,} means the preceding character is matches min or  more 
times. {min,max} means that the preceding character is repeated at
least min & at most max times.

4. Подстановочный знак (.)

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

Example : 
The Regular expression .* will tell the computer that any character
can be used any number of times.

5. Чередование

Символ | pipe()используется для чередования в регулярных выражениях. Это позволяет вам указать несколько альтернатив в шаблоне, совпадая с любой из них. Например:

Example: cat|dog" matches either "cat" or "dog".
"gr(e|a)y" matches "grey" or "gray".

6. Обратные ссылки

Обратные ссылки позволяют ссылаться на захваченные группы в регулярном выражении. Они используют синтаксис «\number», где «number» представляет собой захваченный номер группы.

The pattern "(\w)\1" matches any repeated alphanumeric character, such as "ee", "11", or "tt".

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

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

  1. Проверка электронной почты

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

^[\w.-]+@[a-zA-Z_-]+?(?:\.[a-zA-Z]{2,})+$

2. Подтверждение номера телефона

(\d{3})-(\d{3})-(\d{4})

Разделяя цифры на группы по три, разделенные дефисами, этот шаблон позволяет переформатировать телефонные номера в согласованный формат, например «123–456–7890».

3. URL — анализ

^(https?):\/\/([\w.-]+)(\/[^\s?]+)?(\?[^#\s]+)?(#\S+)?$

Этот шаблон фиксирует протокол (например, «HTTP» или «HTTPS»), домен (например, «example.com»), путь (если есть), параметры запроса (если есть) и идентификатор фрагмента (если есть). присутствует) из URL-адреса.

Заключение

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

https://regexr.com/

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

Я оставлю вас с этим твитом:

Удачного кодирования !!