Действие парсера «REGEXP: Регулярные выражения (выборка / замена)»

Параметры действия:

Предназначение действия:

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

Информацию, как настраивать регулярные выражения, можно загуглить (по запросу regexp), и найти подробные правила и примеры.

Возвращаемое значение: текстовая строка, или массив значений

 


Параметр «Регулярное выражение (шаблон поиска)»

Тип параметра: произвольное текстовое значение

Шаблон (pattern) регулярного выражения

ВАЖНО: в шаблоне регулярного выражения нельзя использовать записи вида {2} или {5} (цифра в фигурных скобках), так как парсер подсчитает это подстановочным кодом, и подставит на место значение из столбца с этим номером.

Например, если нужно задать шаблон поиска \d{4} (ищем 4 цифры подряд), то надо записать это в виде \d{4,4} (ищем цифры в количестве от 4 до 4). Суть от этого не поменяется, но парсер не воспримет запись {4,4} как подстановочный код, в отличие от записи {4}.

 

Параметр «Режим»

Тип параметра: выбор из списка предопределенных значений

Допустимые значения параметра: find all; find and join; find first; replace

Значение по умолчанию: find all

Определяет, будет выполняться поиск совпадений с шаблоном (find) или замена исходной строки на новую (replace)

Для режима поиска (find) доступны 3 варианта:

  • find all возвратит массив всех найденных вхождений
  • find first вернёт первое вхождение
  • find and join — массив результатов будет сцеплен в одну строку через разделитель, заданный в параметре «Сцепить через»

Для режима замены (replace) необходимо указать шаблон замены.

Параметр «Шаблон замены»

Тип параметра: произвольное текстовое значение (например, $1$2, - для подстановки текста из первых 2 скобок шаблона)

 

Параметр «Сцепить через (для режима find and join)»

Тип параметра: выбор из списка, или ввод вручную

Примеры значений параметра: <пусто>; <запятая>; {NL}; {LF}

 

Параметр «Учитывать регистр символов»

Тип параметра: выбор из списка предопределенных значений

Допустимые значения параметра: да; нет

Значение по умолчанию: нет

 

 

Примеры использования:

 

Действие Параметр Значение
ищем вхожения, состоящие из цифр (\d) и дефисов
REGEXP: Регулярные выражения (выборка / замена) Регулярное выражение [\d-]+
Режим find all
Шаблон замены
Сцепить через
Учитывать регистр символов нет
Исходное значение Результат (массив)
Меня зовут Василий, мне 40 лет, мой рост 180 см, мой телефон 212-85-06. Мою жену зовут Анна, ей 32 года, её номер телефона 555-16-38
40
180
212-85-06
32
555-16-38

 

Действие Параметр Значение
ищем все имена (текст после слова «зовут»)
REGEXP: Регулярные выражения (выборка / замена) Регулярное выражение зовут [а-я]+
Режим find and join
Шаблон замены
Сцепить через ,
Учитывать регистр символов нет
Исходное значение Результат
Меня зовут Василий, мне 40 лет, мой рост 180 см, мой телефон 212-85-06. Мою жену зовут Анна, ей 32 года, её номер телефона 555-16-38
зовут Василий, зовут Анна

 

Чтобы извлекать только нужный текст, без тех слов, к которым мы привязываемся при поиске, можно задать шаблон замены ($1 - взять содержимое первых скобок)

Действие Параметр Значение
ищем все имена (текст после слова «зовут»)
REGEXP: Регулярные выражения (выборка / замена) Регулярное выражение зовут ([а-я]+)
Режим find and join
Шаблон замены $1
Сцепить через ,
Учитывать регистр символов нет
Исходное значение Результат
Меня зовут Василий, мне 40 лет, мой рост 180 см, мой телефон 212-85-06. Мою жену зовут Анна, ей 32 года, её номер телефона 555-16-38
Василий, Анна

 

Действие Параметр Значение
ищем все имена и номера телефонов (используем «ленивый режим», добавляя знак вопроса '?' после квантификатора *)
REGEXP: Регулярные выражения (выборка / замена) Регулярное выражение зовут ([А-Яа-я]+),.*?телефон.*?([\d-]+).*?
Режим find all
Шаблон замены $1 $2
Сцепить через
Учитывать регистр символов нет
Исходное значение Результат (массив)
Меня зовут Василий, мне 40 лет, мой рост 180 см, мой телефон 212-85-06. Мою жену зовут Анна, ей 32 года, её номер телефона 555-16-38
Василий 212-85-06
Анна 555-16-38

 

Действие Параметр Значение
ищем первый номер телефона (от 7 до 11 цифр)
REGEXP: Регулярные выражения (выборка / замена) Регулярное выражение [\d-]{7,11}
Режим find first
Шаблон замены
Сцепить через
Учитывать регистр символов нет
Исходное значение Результат
Меня зовут Василий, мне 40 лет, мой рост 180 см, мой телефон 212-85-06. Мою жену зовут Анна, ей 32 года, её номер телефона 555-16-38
212-85-06

 

В режиме REPLACE мы делаем не выборку, а вносим изменения в исходную строку:

Действие Параметр Значение
изменяем найденный текст
REGEXP: Регулярные выражения (выборка / замена) Регулярное выражение [\d-]{7,}
Режим replace
Шаблон замены [скрыт]
Сцепить через
Учитывать регистр символов нет
Исходное значение Результат
Меня зовут Василий, мне 40 лет, мой рост 180 см, мой телефон 212-85-06. Мою жену зовут Анна, ей 32 года, её номер телефона 555-16-38
Меня зовут Василий, мне 40 лет, мой рост 180 см, мой телефон [скрыт]. Мою жену зовут Анна, ей 32 года, её номер телефона [скрыт]

 

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

Действие Параметр Значение
REGEXP: Регулярные выражения (выборка / замена) Регулярное выражение .+?зовут.*?([А-Я][А-Яа-яЁё]+).*? (\d+) (лет|года).+?([\d-]{7,})(.*?)
Режим find and join
Шаблон замены по телефону $4 вам ответит $2-летний $1
Сцепить через ,
Учитывать регистр символов да
Исходное значение Результат
Меня зовут Василий, мне 40 лет, мой рост 180 см, мой телефон 212-85-06. Моего друга зовут Андрей, ему 32 года, её номер телефона 555-16-38
по телефону 212-85-06 вам ответит 40-летний Василий, по телефону 555-16-38 вам ответит 32-летний Андрей