Регулярные выражения

месяц и 3 недели назад

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

Регулярные выражения - это мощный инструмет для поиска строк в тексте и, возможно, их замены. Например, когда вам нужно заменить все цифры в каком-то тексте, вместо перечисления всех возможных вариантов можно использовать регулярное выражение вида \d+

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

Где использовать и как тренироваться?

Мы будем говорить о регулярных выражениях только в рамках сервиса Q-Parser, поэтому если вы матерый программист, скорее всего, вам будет не очень интересно. Тем не менее, примеры будут полезны даже если по ночам вы допиливаете гугл.

На Q-Parser регулярные выражения используются в инструменте Поиск и замена. Не забудьте поставить галочку "Регулярное выражение". Для тренировок достаточно что-нибудь спарсить и тренироваться на этих товарах. Сломать что-то не получится, все изменения можно легко отменить и попробовать еще раз.

Основы синтаксиса

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

Любое регулярное выражение заключено в пару символов-разделителей: один в начале, другой в конце. На Q-Parser вы используем прямой слеш (/). Они подставляются автоматически и вводить их не нужно. Напротив, если вы хотите использовать этот символ при поиске, необходимо перед ним поставить обратный слеш (/), т.е. получится такая конструкция: \/

Регулярное выражение так же имеет модификаторы, которые указываются обычно в конце. На Q-Parser это uis. Простыми словами, это означает что поиск будет вестись по всем строкам и без зависимости от регистра символов (БОЛЬШИЕ или мателькие буквы).

В целом любой текст будет являться регулярным выражением. Например, /asd/uis найдет все вхождения в текст символов asd. Но регулярные выражения имеют возможность удобного указания наборов символов. Мы не будем приводить все возможные варианты, их слишком много, но вот некоторые из них:

\d - соответствует любой одной цифре

. - точка соответствует любому одному символу

\w - соответствует любому символу латиницы, цифре или знаку подчеркивания (_)

\s - соответствует любому пробельному символу

^ - соответствует началу строки

$ - соответствует концу строки

 

Если необходимо найти несколько символов, пользуются следующим приемом:

\d+ - добавление знака плюс (+) соответствует одному или больше символов.

\d* - добавление звездочки (*) соответствует ни одному или больше символов.

\d{3,5} - а так можно указать количество символов от 3 до 5, например.

 

Можно задать набор символов через квадратные скобки:

[123] - это будет соответствовать одному 1 или 2 или 3, но только одному из символов.

[123]+ - а это уже будет соответствовать нескольким символам, например 123321

[^123] - если поставить знак ^ в начале квадратных скобок, можно наоборот исключить эти символы. Данное выражение всему кроме символов 123.

[1-9] - так можно перечислять диапазон символов, в данном случае это люая цифра от 1 до 9.

 

Скобочные группы:

(один|два|три) - такое выражение будет соответствовать любому из слов "один", "два", "три".

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

 

Полезные сервисы:

regex101.com можно "вживую" писать и тестировать регулярные выражения.

regexr.com еще один вариант подобного сервиса.

Примеры регулярных выражений

Текст: Фиолетовое платье красного цвета. Размеры: 24, 25, 26

Регулярное выражение: /Размеры:\s*[1-9, ]+/uis

На что заменяем: Пустая строка

Результат: Фиолетовое платье красного цвета.

 

Текст: Ширина 22 мм

Регулярное выражение: /\d+/uis

На что заменяем: 12

Результат: Ширина 12 мм

 

Текст: Ширина 38 метров

Регулярное выражение: /(\d+) метров/uis

На что заменяем: палубы $1 сантиметров

Результат: Ширина палубы 38 сантиметров

В данном примере мы выделили цифры в скобки в регулярном выражении, а затем подставили их в $1 в замене.

 

Текст: Красный барбарис шел по зеленой улице в синем сарафане

Регулярное выражение: /(красный|зеленой|синем)/uis

На что заменяем: Фиолетовый

Результат: Фиолетовый барбарис шел по Фиолетовый улице в Фиолетовый срафане

 

Текст: Красный фартук увидел красный светофор и красный баклажан.

Регулярное выражение: /Красный (фартук|баклажан)/uis

На что заменяем: $1 пиджак

Результат: Красный пиджак увидел красный светофор и красный пиджак

 

Текст: Красный красный красный красный

Регулярное выражение: /(^красный|красный$)/uis

На что заменяем: зеленый

Результат: зеленый красный красный зеленый

 

Текст: Фиолетовый манжет с красной затежкой

Регулярное выражение: /(манжет).*/uis

На что заменяем: $1

Результат: Фиолетовый манжет

 


Читайте также
Как настроить валюту в товарах ВКонтакте?
15.02.2019 12:43
Как настроить валюту в товарах ВКонтакте?

Инструкция по настройке валюты в товарах ВКонтакте

Когда клиент работает на нас! 5 способов попросить отзыв
16.08.2019 15:03
Когда клиент работает на нас! 5 способов попросить отзыв

Если вы не собираете отзывы клиентов, срочно пересматривайте ваше отношение к ним! Отзывы, как положительные, так и негативные, – важный маркетинговый инструмент. В статье мы расскажем, как получать больше отзывов.

Что такое триггер в маркетинге. Ошибки шаблонов и триггеров​
14.08.2019 13:52
Что такое триггер в маркетинге. Ошибки шаблонов и триггеров​

Cross-sell, Up-sell и другие страшные слова. Объясняем просто и понятно

Тексты для интернет-магазинов: какой текст нужен и как писать. Часть-1
26.11.2019 10:28
Тексты для интернет-магазинов: какой текст нужен и как писать. Часть-1

Рассказываем о качественных текстах для интернет-магазинов