SubFieldRegEx() извлекает текст из входного строкового выражения, используя указанный шаблон регулярного выражения в качестве разделителя. Функция возвращает нулевое значение, если не найдено ни одного совпадения.
Эта функция выполняет операции с регулярными выражениями, чувствительные к регистру. В качестве альтернативы можно использовать вариант SubFieldRegExI() для выполнения операций с регулярными выражениями без учета регистра.
Текст входной строки, в которой требуется выполнить поиск шаблона регулярного выражения.
regex_delimiter
Строковое выражение, содержащее регулярное выражение для использования в качестве разделителя. Вы можете указать несколько разделителей в одном шаблоне регулярного выражения, разделив их символом | (вертикальная черта).
field_no
Целочисленное значение, указывающее номер подразделения, которое требуется извлечь. Например, укажите значение 4, чтобы извлечь четвертое подразделение. Данный аргумент является необязательным.
Следующие правила применяются независимо от того, используется функция в скрипте загрузки или выражении диаграммы:
Если field_no имеет положительное значение, функция вернет одно значение, определяя совпадения слева направо.
Если field_no имеет отрицательное значение, функция вернет одно значение, определяя совпадения справа налево.
При использовании функции в скрипте загрузки:
Если функция SubFieldRegEx() используется в операторе LOAD и field_no опускается, функция генерирует столько записей, сколько находит совпадений.
Если с помощью функции SubFieldRegEx() загружено несколько полей и ни в одном из них не задан аргумент field_no, будет создано декартово произведение всех возможных комбинаций.
При использовании функции в выражениях диаграммы:
Если значение field_no опущено, по умолчанию используется значение 1.
Примеры функции
Пример
Результат
SubFieldRegEx('a,b c;1 2,3',' |,|;', 1)
Возвращает a. В этом примере указаны три разделительных символа (пробел, запятая и точка с запятой).
SubFieldRegEx('a;b;c;1;2;3',';', 2)
Возвращает b. В этом случае задан только один символ-разделитель (точка с запятой).
SubFieldRegEx('a,b c;1 2,3',' |,|;', 4)
Возвращает 1.
Когда это следует использовать
Можно использовать SubFieldRegEx() для извлечения нескольких отдельных значений из списка с разделителями. Например, если в большом массиве текста на естественном языке есть список, разделенный запятыми, можно использовать эту функцию для изоляции каждого отдельного значения из списка в новую запись в модели данных.
Пример 1: скрипт загрузки для разделения тегов по транзакции
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Таблица Transaction_By_Tag, которая изначально содержит данные о транзакциях. Эти данные обрабатываются для извлечения отдельных значений тегов в новые записи.
Создание поля TransactionTag для хранения значений извлеченных тегов.
В поле с тегами транзакций содержится несколько тегов в текстовых строках с разделителями. Разделителем может быть любой из следующих символов: , | ;
Скрипт загрузки
Transaction_By_Tag:
Load SubFieldRegEx(Tags, ',|;|\|') as TransactionTag,
* Inline [
ID Product Tags Amount
1 Product A Special order,Eligible for return,Warranty included 100.93
2 Product B Ineligible for return|No warranty available 51.11
3 Product C No warranty available 12.83
4 Product B Special order;Liquidation sale;Warranty included 209.48
] (delimiter is '\t');
drop fields Tags;
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
ID
Product
TransactionTag
Таблица результатов
ID
Product
TransactionTag
1
Product A
Eligible for return
1
Product A
Warranty included
1
Product A
Special order
2
Product B
No warranty available
2
Product B
Ineligible for return
3
Product C
No warranty available
4
Product B
Liquidation sale
4
Product B
Special order
4
Product B
Warranty included
Этот пример демонстрирует, что при использовании скрипта загрузки SubFieldRegEx() возвращает отдельную строку для каждого совпадения, найденного во входной строке.
Пример 2: выражения диаграммы для разделения тегов по транзакциям
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Таблица Transaction_By_Tag, которая содержит данные о транзакциях.
Поле Tags, содержащее текстовые строки для хранения всех тегов, связанных с транзакцией.
Требования:
В поле с тегами транзакций содержится несколько тегов в текстовых строках с разделителями. Разделителем может быть любой из следующих символов: , | ;
Требуется использовать выражения диаграммы для выделения каждого тега в отдельное поле, при этом в транзакцию можно будет добавить до трех меток.
Скрипт загрузки
Transaction_By_Tag:
Load * Inline [
ID Product Tags Amount
1 Product A Special order, Eligible for return, Warranty included 100.93
2 Product B Ineligible for return | No warranty available 51.11
3 Product C No warranty available 12.83
4 Product B Special order;Liquidation sale;Warranty included 209.48
] (delimiter is '\t');
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
ID
Tags
Добавьте эти вычисляемые измерения:
=SubFieldRegEx(Tags, ',|;|\|', 1)
=SubFieldRegEx(Tags, ',|;|\|', 2)
=SubFieldRegEx(Tags, ',|;|\|', 3)
Таблица результатов
ID
Tags
=SubFieldRegEx(Tags, ',|;|\|', 1)
=SubFieldRegEx(Tags, ',|;|\|', 2)
=SubFieldRegEx(Tags, ',|;|\|', 3)
1
Special order, Eligible for return, Warranty included
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!