CountRegEx() возвращает количество вхождений указанного шаблона регулярного выражения в тексте входной строки. Если совпадения отсутствуют, возвращается 0.
Эта функция выполняет операции с регулярными выражениями, чувствительные к регистру. В качестве альтернативы можно использовать вариант CountRegExI() для выполнения операций с регулярными выражениями без учета регистра.
Синтаксис:
CountRegEx
(text, regex)
Возвращаемые типы данных: числовое значение
Аргументы
Аргумент
Описание
text
Текст входной строки, в которой требуется выполнить поиск регулярного выражения.
regex
Шаблон регулярного выражения, который требуется найти.
Примеры функции
Пример
Результат
CountRegEx('abc123','[a-z]')
Возвращает 3.
CountRegEx('abc123','[a-z][0-9]')
Возвращает 1.
CountRegEx('abc123','[0-9]')
Возвращает 3.
CountRegEx('ABC','[a-z]{3}')
Возвращает 0.
CountRegExI('ABC','[a-z]{3}')
Возвращает 1. Поскольку используется вариант CountRegExI(), поиск по тексту выполняется без учета регистра.
Когда это следует использовать
Можно привести следующие примеры использования CountRegEx():
Подсчет количества вхождений определенного текстового шаблона в строке. Например, в документах и сообщениях электронной почты можно выполнять поиск адресов электронной почты, номеров телефонов и другой информации.
Проверка соответствия данных определенным требованиям к синтаксису. Например, можно выявлять случаи ошибок при вводе данных.
Пример 1: скрипт загрузки для подсчета допустимых диапазонов лет
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Таблица с именем Vehicles, содержащая список автомобилей, а также состояние и модельный год каждого автомобиля.
Для каждой записи в Vehicles выполняется расчет, чтобы определить, соответствует ли диапазон годов выпуска автомобилей ожидаемому синтаксису. Допустимые диапазоны лет включают 1990-е, 2000-е, 2010-е и 2020-е годы. Этот расчет выполняется с помощью функции CountRegEx().
Пример 3: выражение диаграммы для подсчета вхождений строки
Обзор
Откройте Редактор загрузки данных и добавьте следующий скрипт загрузки в новый раздел.
Скрипт загрузки содержит текст из нескольких корпоративных писем, которые были разосланы сотрудникам организации. Данные уже очищены от любой персональной идентифицирующей информации (PII), кроме названия компании и адреса электронной почты, с которого было отправлено каждое письмо. Тело каждого сообщения свернуто в одну непрерывную строку. Другими словами, удалены все символы форматирования и новой строки.
Требования:
Необходимо определить, какие сообщения содержат строку, включающую адрес электронной почты TestCompanyNameCorrespondence@test.com, а также конкретную предшествующую ему фразу, указывающую на то, что это адрес отправителя.
Требуется обеспечить гибкость при идентификации таких вводных фраз, но при этом сохранить некоторые четкие ограничения. Допустимыми считаются вводные фразы Sender (Отправитель) и Sent by (Отправил). Для достижения этой цели можно использовать шаблоны регулярных выражений.
Чувствительность к регистру адресов электронной почты не играет роли. Поэтому поиск должен выполняться без учета регистра.
Скрипт загрузки
Correspondences:
Load * Inline [
ID|MessageBody
1|Sent by-- TestCompanyNameCorrespondence@test.com Good morning TestCompanyName team! I hope you are all well. I am just reaching out about the fabulous benefits package we launched just year. Our goal is to take a poll of what you all think. Can you please rate the new options from 1-10 in a response to this email, by this Tuesday? Thank you!
2|Sender: TestCompanyNameIT@test.com Did you know you can access our IT portal anytime, from any of your company devices? It's true! Reach out to your team lead to learn more.
3|Sender: TESTCOMPANYNAMECORRESPONDENCE@test.COM URGENT: This is a message to inform employees of an ongoing issue with our local branch. The branch will be closed until further notice. Thank you
4|Sender: TestCompanyNameVolunteering@test.com Dear team! We are looking for volunteers to help with this year's charity event! We need 40 volunteers to help with the event. If you are interested, please send an email to your direct supervisor. Thanks, TestCompanyName team members, for helping make the world a better place!
5|Sender is TestCompanyNameCorrespondence@test.com Hi folks, it's time to announce the annual TestCompanyName staff party! The party will be taking place at the office this year. Please make sure to RSVP, and we hope to see you there! Sincerely, the TestCompanyName management team
] (delimiter is |);
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
В свойствах меры задайте параметру Функция итоговых значений значение Sum. Таким образом в строке итогов в верхней части таблицы настраивается подсчет общего количества учитываемых записей.
Эта мера подсчитывает количество совпадений с заданным шаблоном регулярного выражения в содержимом сообщения. В шаблоне регулярного выражения .* обозначает любое количество любых символов, кроме символов новой строки. Шаблон также учитывает различия в том, какой фразой предваряется адрес электронной почты: и Sender, и Sent by являются допустимыми совпадениями. Вариант функции CountRegExI() обеспечивает поиск без учета регистра.
Sent by-- TestCompanyNameCorrespondence@test.com Good morning TestCompanyName team! I hope you are all well. I am just reaching out about the fabulous benefits package we launched just year. Our goal is to take a poll of what you all think. Can you please rate the new options from 1-10 in a response to this email, by this Tuesday? Thank you!
1
2
Sender: TestCompanyNameIT@test.com Did you know you can access our IT portal anytime, from any of your company devices? It's true! Reach out to your team lead to learn more.
0
3
Sender: TESTCOMPANYNAMECORRESPONDENCE@TEST.COM URGENT: This is a message to inform employees of an ongoing issue with our local branch. The branch will be closed until further notice. Thank you
1
4
Sender: TestCompanyNameVolunteering@test.com Dear team! We are looking for volunteers to help with this year's charity event! We need 40 volunteers to help with the event. If you are interested, please send an email to your direct supervisor. Thanks, TestCompanyName team members, for helping make the world a better place!
0
5
Sender is TestCompanyNameCorrespondence@test.com Hi folks, it's time to announce the annual TestCompanyName staff party! The party will be taking place at the office this year. Please make sure to RSVP, and we hope to see you there! Sincerely, the TestCompanyName management team
1
Среди пяти сообщений в трех найдены соответствия заданному шаблону регулярного выражения. Каждое сообщение содержит одно совпадение.
Примечание к информацииФункция MatchRegEx() также полезна для следующих случаев проверки.
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!