Skip to main content

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


Описание.

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

Как добавить в проект?

Через контекстное меню Добавить действие → Данные → Обработка текста:

Добавить в проект

Внешний вид экшена.

Добавить в проект

Окно состоит из трех областей:
1. Входная строка. Сюда можно поместить текст, переменную или их комбинацию.
2. Действия над строкой и ее свойства, а также их настройки.
3. Строка с выводом результата в переменную.

Если установить курсор в поле входной строки и нажать Ctrl+Пробел, то появится выпадающий список с полезными константами и переменными проекта.

Добавить в проект


Escape строки (Экранирование символов).

Этот экшен экранирует пробел и символы: * + ? | { [ ( ) ^ $ . #. То есть он размещает слэш \ перед каждым из этих символов.

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


Regex (Обработка текста регулярными выражениями).

Добавить в проект

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

Поле ввода Regex.

В данное поле необходимо ввести регулярное выражение, с помощью которого будет производиться поиск по тексту. Пример: (?<=<title>).*(?=</title>).

В составлении регулярных выражений поможет Тестер регулярных выражений.

Добавить в проект

Ошибка при пустом ответе.

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

Обратите внимание на то, что если регулярное выражение вернёт пустую строку, то даже при включении этой настройки экшен все равно выйдет по зеленой ветке. Например, на сайте нет ничего в теге title: <title></title>. Тогда регулярное выражение (?<=<title>).*(?=</title>) сработает, но вернёт пустую строку, а экшен завершится успехом. А вот если в тексте совсем нет title, то действие завершится ошибкой.

Что брать.

Добавить в проект

Первое.

В переменную сохранится первое найденное совпадение.

Все.

Сохранить весь результат поиска в список.

Одно совпадение.

Сохраняет только одно совпадение, которое выбирается исходя из порядкового номера (нумерация с нуля).

Также можно выбрать Последнее или Случайное (Random) значение.

Добавить в проект

Номера совпадений.

Позволяет сохранить в список только номера совпадений, которые указаны через запятую (нумерация с нуля).

В переменные.

Данная функция используется при работе с групповыми регулярными выражениями.

Для лучшего понимания мы подготовили развернутый пример.

Представим, что есть следующий текст:

21.01.2003, 11:34:00.9299
11.12.2013, 01:22:55.3021
04.01.2007, 08:00:06.0032

И нам нужно разобрать его на составляющие. Для этого воспользуемся таким регулярным выражением:
(\d{2}).(\d{2}).(\d{4}), (\d{2}):(\d{2}):(\d{2}).(\d{4})

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

Добавить в проект

Теперь нам надо взять в переменные: день, месяц и год из второй строки. Вот как это можно сделать:

Добавить в проект

Номер совпадения в этом случае — номер строки. Так как нумерация начинается с нуля, то пишем 1, чтобы взять вторую строку.

Далее нужно указать номер группы и переменную, в которую сохранится результат. В группе 0 находится вся найденная строка: 11.12.2013, 01:22:55.3021. Так что для получения раздельных данных указываем следующие номера групп: 1 для дня, 2 для месяца, 3 для года.

В таблицу.

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

Здесь также рассмотрим пример.

Текст оставим из прошлого примера:

21.01.2003, 11:34:00.9299
11.12.2013, 01:22:55.3021
04.01.2007, 08:00:06.0032

И регулярное выражение тоже:
(\d{2}).(\d{2}).(\d{4}), (\d{2}):(\d{2}):(\d{2}).(\d{4})

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

Добавить в проект

В итоговой таблице нам не нужны секунды и миллисекунды:

Добавить в проект

В группе под индексом 0 находится вся найденная строка, поэтому ее исключаем. Также игнорируем группы 6 и 7, так как там лежат секунды и миллисекунды соответственно.

Пример использования Regex.

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

Задача: получить ссылки на профили активных пользователей форума ZennoLab

Добавить в проект

1. С помощью действия Взятие значения получаем HTML-код элемента, в котором размещены ссылки на пользователей, находящихся в статусе Онлайн.
2. Добавляем экшен Regex. Для составления паттерна используем Конструктор регулярных выражений.
3. В свойства экшена на вход добавляем переменную html, а результат сохраняем в список urls.
4. После запуска кубика мы получим в списке уникальные id, которые можно использовать для формирования URL с профилями юзеров.


Spintax (Рандомизация и уникализация текста).

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

В простейшем варианте спинтакс выглядит так: {вариант1|вариант2|вариант3}. При выполнении этого действия в результирующую переменную случайно попадет один из трёх вариантов. Однако конструкции спинтакса бывают более сложными и обладают многоуровневой вложенностью, так что из одного текста можно получить тысячи разных вариантов.

Добавить в проект

Расширенный синтаксис.

  • {Red|White|Blue} — в этом случае в результирующий текст попадает одно из значений, например: White.
  • [ Red| White| Blue] — в результате будет выполнена перестановка значений: White Blue Red.
  • [+_+Red|White|Blue] — значения также будут перетасованы, но уже с наличием разделителя между ними: White_Red_Blue.

Хотим отметить, что вложенность шаблонов неограничена: [+{_|-}+Red|White|Blue {1|2}] = White-Blue 2-Red.
Спец. символы можно экранировать: [+\++Red|\[White\]|Blue] = [White]+Red+Blue.


Split (Разделение текста).

Разделение выполняется через специальный символ (делиметер). В результате обработки строка превратиться в массив из строк. По сути это более простой аналог RegExp для разделения строки символами.

Разделители.

Здесь мы указываем символы, через которые будут разбиваться данные.

Добавить в проект

Разрешить пустые значения.

Эту опцию легче рассмотреть на примере:

Добавить в проект

Здесь у нас есть строка в формате: имя;фамилия;пол;год рождения. Если вы пропустите одно из значений, например, не указав пол: Андрей;Павлов;;1988, то 1988 запишется именно в переменную пол (sex), а не в год (year), как ожидается.

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

Пример использования Split.

Разобьем строки с прокси на составляющие части.

Покупные прокси обычно имеют подобный формат: логин:пароль@хост:порт. То есть тут сразу два разделителя — : и @. Настройки экшена в этом случае могут выглядеть вот так:

Добавить в проект


ToChar (Преобразование целого числа в Unicode).

Каждый символ Юникод имеет свой цифровой код. И именно эта особенность позволяет конвертировать любое числовое значение в соответствующие символы. Например, у символа ♛ числовое значение 9819.

Добавить в проект


ToLower (К нижнему регистру).

Это действие меняет регистр букв на нижний в зависимости от выбранного свойства.

Добавить в проект

Все.

Заменит все символы верхнего регистра в тексте на нижний.

БылоСтало
МЕНЯЕТ РЕГИСТР БУКВ НА НИЖНИЙменяет регистр букв на нижний

Начало слов.

Меняет регистр на нижний только у первого символа каждого слова в тексте.

БылоСтало
МЕНЯЕТ РЕГИСТР БУКВ НА НИЖНИЙмЕНЯЕТ рЕГИСТР бУКВ нА нИЖНИЙ

Первый символ.

Станет маленькой только первая буква первого слова.

БылоСтало
МЕНЯЕТ РЕГИСТР БУКВ НА НИЖНИЙмЕНЯЕТ РЕГИСТР БУКВ НА НИЖНИЙ

ToUpper (К верхнему регистру).

Это действие меняет регистр букв на верхний в зависимости от выбранного свойства.

Добавить в проект

Все.

Заменит все символы нижнего регистра в тексте на верхний.

БылоСтало
текст в нижнем регистреТЕКСТ В НИЖНЕМ РЕГИСТРЕ

Начало слов.

Меняет регистр на верхний только у первого символа каждого слова в тексте.

БылоСтало
текст в нижнем регистреТекст В Нижнем Регистре

Первый символ.

Станет большой только первая буква первого слова.

БылоСтало
текст в нижнем регистреТекст в нижнем регистре

Trim (Удаление символов в начале/конце строки).

Эта функция используется для удаления лишних символов в начале и\или конце переданной строки.

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

Что обрезать.

Тут мы выбираем символы, которые нужно удалить. Это может быть предустановленный вариант для всех типов пробельных символов, либо укажите нужные вам.

Где обрезать.

Определяем, где надо удалить символы:

  • Начало строки;
  • Конец;
  • Начало и Конец.

UrlDecode (Декодировка).

Декодирует строку закодированную с помощью UrlEncode (описано ниже).

Добавить в проект

Наиболее наглядно этот экшен выглядит при раскодировании кириллицы:
Было: %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20%D0%BC%D0%B8%D1%80%21.
Стало: Привет, мир!.


UrlEncode (Кодировка).

В URL разрешается использовать только латинские буквы, цифры и несколько знаков пунктуации. Все остальные символы, которые передаются в HTTP-запросах, должны быть закодированы с помощью UrlEncode. Иначе сервер неправильно интерпретирует запрос.

Кодировать только значения в переменных.

Эта опция пригодится при формировании HTTP запросов. Так как кодировать надо только параметры, но не адрес сайта.
Вот как могут выглядеть настройки экшена:

Добавить в проект

В переменной {-Variable.keyword-} находится текст что такое urlencode. А после выполнения в переменную {-Variable.url-} запишется такая строка:
https://www.google.com/search?q=%d1%87%d1%82%d0%be+%d1%82%d0%b0%d0%ba%d0%be%d0%b5+urlencode


В переменную.

Это действие просто сохраняет всё что вы добавите во входное окно – переменные, текст, символы, константы проекта, в одну отдельную переменную.

Добавить в проект


В список.

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

Добавить в проект

Разделитель.

  • Enter. Символ новой строки.
  • Пробел.
  • Свой текст. Здесь можно указать как единичный символ (например ;), так и несколько символов (но при этом они будут рассматриваться как один разделитель!).
  • Свой Regex. Будет использовано регулярное выражение.

В таблицу.

Данное действие разбивает переданный текст на строки и столбцы через указанные разделители, а затем помещает данные в таблицу.

Разделители

  • Enter. Символ новой строки.
  • Пробел.
  • Свой текст. Здесь можно указать как единичный символ (например ;), так и несколько символов (но при этом они будут рассматриваться как один разделитель!).
  • Свой Regex. Будет использовано регулярное выражение.

Замена.

Это действие заменяет одну строку на другую, а получившийся результат сохраняет в переменную.

Добавить в проект

Что искать.

Здесь указываем строку, которую нужно найти. Либо Regex, если выбран соответствующий вариант.

На что заменить.

Каким текстом мы заменим то, что нашли в прошлом пункте.

Тип поиска.

  • Text. Будет в точности искаться заданный текст.
  • Regex. В этом случае мы пишем регулярное выражение, по которому будет искаться совпадение.

Что заменять.

Первое.

Будет заменено первое найденное совпадение.

Все.

Заменятся сразу все совпадения.

Одно совпадение.

Добавить в проект

В этом случае заменится только указанное совпадение (или Последнее найденное).

Номера совпадений.

Указываем номера совпадений для замены через запятую (нумерация с нуля).


Перевод.

Этот экшен переводит строки с одного языка на другой.

Добавить в проект

Сервис перевода.

Доступно сразу несколько вариантов, что помогает сделать текст наиболее качественным и уникальным.

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

Добавить в проект

Язык оригинала/Язык назначения.

Тут указываем, с какого и на какой язык нужно перевести текст.

Можно указать язык «auto».

Тогда система попробует сама определить язык, но результат не гарантируется.

Писать нужно именно код языка, а не его привычное название. Например:

  • Английский: en
  • Испанский: es
  • Немецкий: de
  • Русский: ru
  • И так далее. Полный список.
Коды языков отличаются для каждого сервиса.

Для полного и достоверного списка кодов рекомендуем обратиться к документации выбранного сервиса.


Подготовка JavaScript.

Это действие нужно для обработки строки под корректное использование в JavaScript. В основном, оно экранирует кавычки, апострофы и другие спец. символы. В результате текст будет подготовлен для вставки в экшены JavaScript и IF.

Было: <a href="https://zennolab.com/">.
Стало: <a href=\"https://zennolab.com/\">.

Протестировать код можно через тестер JavaScript.

Добавить в проект


Подстрока.

Берет из строки заданный кусок текста. Интервал задается с помощью значений От и До, в них мы указываем номера символов.

Добавить в проект

В примере выше мы берем подстроку с 95 символа по Конец текста, получая в итоге «до другого.».


Транслитерация.

В редких случах до сих пор требуется perevesti кириллицу в латиницу. Для этого и нужен данный экшен.

Добавить в проект