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

16 окт 2019 10:41


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

Регулярные выражения - это мощный инструмент для поиска строк в тексте и, возможно, их замены. Например, когда вам нужно заменить все цифры в каком-то тексте, вместо перечисления всех возможных вариантов можно использовать регулярное выражение вида \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

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


Текст: Категория > Подкатегория > Раздел

Регулярное выражение: /^[^>]+>/uis

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

Результат: Подкатегория > Раздел

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

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

Тексты для интернет-магазинов: какой текст нужен и как писать. Часть-2
27 ноя 2019 11:14
Тексты для интернет-магазинов: какой текст нужен и как писать. Часть-2

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

Парсинг сайтов: что это и как работает + 9 способов применения
25 сен 2019 09:20
Парсинг сайтов: что это и как работает + 9 способов применения

О парсинге сайтов простыми словами. С примерами о Q-Parser

Пришёл пересорт: что делать
26 ноя 2019 08:08
Пришёл пересорт: что делать

Как правильно рассказать участникам своего СП о том, что им пришел пересорт? Что делать, как быть?

Облачный парсинг - выгоднее и удобнее чем локальный
15 май 2020 09:47
Облачный парсинг - выгоднее и удобнее чем локальный

В чем преимущества облачного парсинга☁️ над локальным💻: сравнение по принципу работы и функционалу. Почему лучше выбрать облачный парсинг: как он экономит время⏳ и затраты💰.

Частые ошибки организаторов СП
27 март 2019 08:48
Частые ошибки организаторов СП

Разбираем ошибки, которые совершают организаторы совместных покупок

Что такое инфоповод и его виды: как собрать календарь событий
30 янв 2020 10:19
Что такое инфоповод и его виды: как собрать календарь событий

Поймайте посещаемость за хвост!

Как наложить текст на изображение?
26 фев 2019 14:47
Как наложить текст на изображение?

Рассказываем как пользоваться функцией наложения текста на Q-Parser

Собираем отзывы участников: как надо и как не надо это делать?
27 май 2019 09:10
Собираем отзывы участников: как надо и как не надо это делать?

Благодаря отзывам вы понимаете, что делать, чтобы клиенты заказывали чаще и больше