ExtractRegExGroup() извлекает текст из входного строкового выражения, используя указанный шаблон составного регулярного выражения. При использовании функции укажите группу, которую следует использовать в составном регулярном выражении. Функция возвращает нулевое значение, если не найдено ни одного совпадения.
Если используется функция ExtractRegExGroup() в операторе LOAD, а field_no опускается, то функция будет возвращать несколько записей. Если с помощью функции ExtractRegExGroup() загружено несколько полей, будет создано декартово произведение всех возможных комбинаций.
Эта функция выполняет операции с регулярными выражениями, чувствительные к регистру. В качестве альтернативы можно использовать вариант ExtractRegExGroupI() для выполнения операций с регулярными выражениями без учета регистра.
Синтаксис:
ExtractRegExGroup
(text, regex, group [, field_no])
Возвращаемые типы данных: строка
Аргументы
Аргумент
Описание
text
Строковое выражение, содержащее текст, который будет извлечен в возвращаемое значение.
regex
Регулярное выражение, которое будет использоваться для извлечения текста.
group
Номер группы в случае составного регулярного выражения.
Если регулярное выражение содержит только одну группу, используйте вместо этого функцию ExtractRegEx(). В качестве альтернативы используйте функцию ExtractRegExGroup() с group=0.
Можно указать отрицательное значение group для поиска совпадений справа налево.
field_no
Номер совпадения, которое нужно извлечь. Это полезно, когда в тексте может быть найдено несколько совпадений с регулярным выражением. Например, укажите значение 4, чтобы извлечь четвертое совпадение.
Данный аргумент является необязательным. Если значение на задано, по умолчанию используется 1.
Возвращает 456 (вторая группа второго совпадения).
Когда это следует использовать
Можно использовать Extract RegEx() для извлечения информации, которую требуется изолировать от данных, которые могут также содержать другую информацию (например, произвольный текст или строки JSON). Пример.
Извлекайте из текста адреса электронной почты, номера телефонов, номера счетов и другую информацию.
Извлекайте из текста числовые значения (например, денежные суммы).
Стандартизируйте форматирование текстовых или числовых данных.
Пример 1: скрипт загрузки для разбора кодов транзакций
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Таблица с именем Transactions, которая содержит информацию о транзакциях. Определенные детали фиксируются с помощью кодов транзакций с использованием следующего синтаксиса:
Год транзакции-Источник транзакции (то есть покупка онлайн или в магазине)-Связанный распределительный центр
Создание нескольких новых полей для извлечения каждого элемента сведений, в каждом из которых используется одно и то же составное регулярное выражение.
Требования:
Год может быть любой комбинацией из четырех чисел.
Значения ONLINE и INSTORE являются единственными приемлемыми значениями для источника транзакций.
Распределительный центр должен иметь пятизначный номер.
Скрипт загрузки
Transactions:
Load
recno() as RecordID,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',0) as TransactionCode_Unparsed,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',1) as TransactionYear,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',2) as TransactionSource,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',3) as TransactionDC,
* Inline `
TransactionCode, Category
2025-ONLINE-60019, Product A
2024-INSTORE-60020, Product B
2025-ONLINE-60018, Product C
2024-ONLINE-60020, Product A
2025-INSTORE-60019, Product B
2025-ONLINE-60017, Product D
`;
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
RecordID
TransactionCode
TransactionCode_Unparsed
TransactionYear
TransactionSource
TransactionDC
Таблица результатов
RecordID
TransactionCode
TransactionCode_Unparsed
TransactionYear
TransactionSource
TransactionDC
1
2025-ONLINE-60019
2025-ONLINE-60019
2025
ONLINE
60019
2
2024-INSTORE-60020
2024-INSTORE-60020
2024
INSTORE
60020
3
2025-ONLINE-60018
2025-ONLINE-60018
2025
ONLINE
60018
4
2024-ONLINE-60020
2024-ONLINE-60020
2024
ONLINE
60020
5
2025-INSTORE-60019
2025-INSTORE-60019
2025
INSTORE
60019
6
2025-ONLINE-60017
2025-ONLINE-60017
2025
ONLINE
60017
Эти результаты подчеркивают, что аргумент group позволяет многократно использовать одно и то же регулярное выражение для нескольких операций. Поле TransactionCode_Unparsed, которое использует значение group=0, в данном случае не дает никакого дополнительного значения, но показано здесь для демонстрации функции.
Пример 2: скрипт загрузки для извлечения контактной информации о предприятий
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Таблица с именем BusinessContactInfo, содержащая информацию о компаниях, которая была найдена на веб-сайте каждой компании.
ContactInfo ― это поле, содержащее произвольный текст, включая адреса электронной почты и номера телефонов компаний.
Создание нескольких новых полей для извлечения каждого элемента сведений, в каждом из которых используется одно и то же составное регулярное выражение.
Требования:
Адреса электронной почты должны соответствовать определенному набору требований и синтаксису.
Телефонные номера должны быть телефонными номерами стандарта NANP (Североамериканский план телефонной нумерации), состоящими из 10 цифр. Требуется разрешить заключение кода области в скобки, а также разрешить пустые пробелы и дефисы в некоторых местах.
Скрипт загрузки
BusinessContactInfo:
Load
ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',1,1) as CompanyEmail,
ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',2,2) as CompanyPhoneNum,
* Inline `
ID CompanyName ContactInfo
1 Company A Email is: Company1@example.com, Phone number is: (123) 456-7890
2 Company B Email is: company2@test.com, Phone # is: 0123456790
3 Company C Email is: company3@placeholder.com, Phone no. is: 234-567-8901
` (delimiter is '\t');
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
CompanyName
CompanyEmail
CompanyPhoneNum
Таблица результатов
CompanyName
CompanyEmail
CompanyPhoneNum
Company A
Company1@example.com
(123) 456-7890
Company B
company2@test.com
0123456790
Company C
company3@placeholder.com
234-567-8901
Одно и то же составное регулярное выражение повторно используется для получения различной информации. Аргумент group указывает, какую из двух групп регулярного выражения следует искать, а аргумент field_no определяет общее совпадение (по всей строке), которое требуется найти.
Вариант функции ExtractRegEGroupxI() обеспечивает поиск без учета регистра.
Пример 3: скрипт загрузки для извлечения компонентов из кодов ISBN
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Создание переменнойISBN_RegEx для хранения регулярного выражения, которое требуется использовать для всех извлечений.
Набор кодов ISBN для книг, которые книжный магазин хочет заказать у нескольких поставщиков.
Нужно извлечь следующую информацию из каждого кода ISBN:
EAN (Европейский номер товара)
Группа
Регистрант
Публикация
Контрольная сумма
Скрипт загрузки
SET ISBN_RegEx = 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})';
ISBN:
LOAD Supplier,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',1) AS EAN,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',2) AS Group,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',3) AS Registrant,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',4) AS Publication,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',5) AS Checksum;
// Split the ISBN with the Group function in a preceding load to avoid generating a cartesian product
LOAD *,
ExtractRegEx(SupplierBooks, '$(ISBN_RegEx)') AS Books
INLINE [
Supplier, SupplierBooks
Supplier 1, ISBN 123-3-1234-1234-0 ISBN 012-2-0123-0123-4 ISBN 000-1-0123-0123-2 ISBN 234-5-2345-2345-1 ISBN 555-2-5555-5555-3 ISBN 222-4-2222-2222-2
Supplier 2, ISBN 000-0-3333-3333-3 ISBN 333-3-3333-3333-3 ISBN 555-1-5151-5151-3 ISBN 232-1-2323-2323-1 ISBN 008-0-7777-7777-3 ISBN 888-0-9999-0000-0
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
Supplier
EAN
Group
Registrant
Publication
Checksum
Таблица результатов
Supplier
EAN
Group
Registrant
Publication
Checksum
Supplier 1
000
1
0123
0123
2
Supplier 1
012
2
0123
0123
4
Supplier 1
123
3
1234
1234
0
Supplier 1
222
4
2222
2222
2
Supplier 1
234
5
2345
2345
1
Supplier 1
555
2
5555
5555
3
Supplier 2
000
0
3333
3333
3
Supplier 2
008
0
7777
7777
3
Supplier 2
232
1
2323
2323
1
Supplier 2
333
3
3333
3333
3
Supplier 2
555
1
5151
5151
3
Supplier 2
888
0
9999
0000
0
Пример 4: выражения диаграммы для извлечения контактной информации предприятия (со сравнением ExtractRegEx())
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Таблица с именем BusinessContactInfo, содержащая информацию о компаниях, которая была найдена на веб-сайте каждой компании.
ContactInfo ― это поле, содержащее произвольный текст, включая адреса электронной почты и номера телефонов компаний. Необходимо извлечь каждый адрес электронной почты и номер телефона с помощью выражений диаграммы.
Требования:
Адреса электронной почты должны соответствовать определенному набору требований и синтаксису.
Телефонные номера должны быть телефонными номерами стандарта NANP (Североамериканский план телефонной нумерации), состоящими из 10 цифр. Требуется разрешить заключение кода области в скобки, а также разрешить пустые пробелы и дефисы в некоторых местах.
Скрипт загрузки
BusinessContactInfo:
Load * Inline `
ID CompanyName ContactInfo
1 Company A Email is: Company1@example.com, Phone number is: (123) 456-7890
2 Company B Email is: company2@test.com, Phone # is: 0123456790
3 Company C Email is: company3@placeholder.com, Phone no. is: 234-567-8901
` (delimiter is '\t');
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:
CompanyName
Добавьте следующие вычисляемые измерения в таблицу:
Одно и то же составное регулярное выражение повторно используется для получения различной информации. Аргумент group указывает, какую из двух групп регулярного выражения следует искать, а аргумент field_no определяет общее совпадение (по всей строке), которое требуется найти.
Вариант функции ExtractRegEGroupI() обеспечивает поиск без учета регистра.
Пример 5: Разбор URL (со сравнением ExtractRegEx() )
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Таблица с именем Correspondence, которая содержит текст сообщения электронной почты в поле с именем EmailBody.
Содержимое сообщений электронной почты, где есть URL-адреса веб-сайтов.
Требуется извлечь второй URL, если он есть, в следующие компоненты:
Полный URL
Протокол
Домен
Путь
Требуется использовать одно регулярное выражение для управления всеми извлечениями.
Скрипт загрузки
Correspondence:
Load * Inline `
ID EmailBody
1 Thanks again for this morning's meeting! You can find the meeting minutes posted here: https://example.com/resourceexample. If you still have any questions, always feel free to ask me or one of the other team members. Here are a few learning resources that might help you: http://www.example.ca/training1.pptx http://www.example.ca/training2.pptx http://www.example.ca/training3.pptx Thanks again!
2 Hi, you'll want to visit our company website for that, it's available at https://www.example.se.
3 Hello all, I just wanted to let you know that our online stores are now up and running! I couldn't be more excited. We are already seeing quite a bit of traffic and volume sold, which is very promising! For Product A, go to https://www.examplestore1.com/products. For Product B, you'll want go to https://www.examplestore2.com/products. Product C, go check out https://www.examplestore3.com/products. Cheers!
` (delimiter is '\t');
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:
ExtractRegEx() возвращает URL-адрес полностью, в то время как ExtractRegExGroup() возвращает отдельные части URL, соответствующие использованному значению group. Запись со значением ID, равным 2, содержит только один URL, поэтому никаких данных для нее не возвращается.
Одно и то же регулярное выражение используется во всех выражениях диаграммы для возврата различной информации. Разбивка групп, определенных в регулярном выражении, выглядит следующим образом.
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!