# ReplaceRegExGroup Функция скрипта и диаграммы

ReplaceRegExGroup() возвращает строку после замены одного или нескольких совпадений между входной строкой и заданным шаблоном составного регулярного выражения. Текст, который заменяет совпадающий текст, указан в аргументе to\_str. Функция работает слева направо, но если occurrence имеет отрицательное значение, функция будет читать справа налево.

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

Синтаксис:

ReplaceRegExGroup (text, regex, to\_str, group [, occurrence])

Возвращаемые типы данных: string

Аргументы

| Аргумент | Описание |
| --- | --- |
| text | Текст входной строки, который требуется полностью или частично заменить новым текстом из to\_str. |
| regex | Регулярное выражение, определяющее, когда заменять текст. Заменяются совпадения между этим аргументом и аргументом text. |
| to\_str | Новый текст, который требуется использовать для замены существующего содержимого из text. |
| group | Номер группы в случае составного регулярного выражения.<br><br>Если регулярное выражение содержит только одну группу, используйте вместо этого функцию ReplaceRegEx(). В качестве альтернативы используйте функцию ReplaceRegExGroup() с group=`0`.<br><br>Можно указать отрицательное значение group для поиска совпадений справа налево. |
| occurrence | Номер совпадения (между входным текстом и регулярным выражением) для замены новым текстом.<br><br>Данный аргумент является необязательным. По умолчанию 0, если опущено. Когда используется значение 0 или если аргумент опущен, все совпадения между text и regex заменяются на to\_str.<br><br>Можно указать отрицательное значение для occurrence, если требуется искать совпадения справа налево. |

Примеры функции

| Пример | Результат |
| --- | --- |
| `ReplaceRegExGroup('abc123','([a-z])([0-9]+)','x',0)` | Возвращает `abx` (замена полного совпадения). |
| `ReplaceRegExGroup('abc123','([a-z])([0-9]+)','x',1)` | Возвращает `abx123` (заменяет только первую группу в совпадении). |
| `ReplaceRegExGroup('abc123','([a-z])([0-9]+)','x',2)` | Возвращает `abcx` (заменяет только вторую группу в совпадении). |
| `ReplaceRegExGroup('abc123abc123','([a-z])([0-9]+)','x',1,2)` | Возвращает `abc123abx123`. Есть два совпадения между первой группой входного текста и шаблоном регулярного выражения. Однако заменяется только второе вхождение. |
| `ReplaceRegExGroup('ABC123ABC123','([a-z])([0-9]+)','x',1)` | Возвращает `ABC123ABC123`. Другими словами, замена текста не выполняется. Это объясняется тем, что функция учитывает регистр, а вариант функции без учета регистра не используется. |
| `ReplaceRegExGroupI('ABC123ABC123','([a-z])([0-9]+)','x',1)` | Возвращает `ABx123ABx123`. В этом примере замена текста происходит потому, что используется нечувствительный к регистру вариант функции, ReplaceRegExGroupI(). |

## Когда использовать ReplaceRegExGroup

Можно использовать ReplaceRegExGroup() для изменения текста с учетом стандартов форматирования и соответствия, особенно когда требуется определить в данных сложные шаблоны. Дополнительный аргумент group для этой функции позволяет обновлять только определенные части большого текстового шаблона. Например, можно обновлять определенные части URL-адреса.

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

## Пример 1: скрипт загрузки для обновления домена в URL-адресах

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegExGroup.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Таблица `URLs`, изначально содержащая список входных строк, в которых требуется определить и обновить определенные URL-адреса. Требуется обновить домен в этих URL-адресов.

* Создание поля `ResourceURL_Updated`, содержащего измененный текст ввода с обработанными URL-адресами.

* Переменная `URL_RegEx` для хранения регулярного выражения, которое используется для определения URL-адресов, требующих обработки.

Требования:

* Каждая входная строка содержит два URL-адреса, причем URL-адрес ресурса указан в первом URL-адресе. Требуется обновить только первый URL-адрес из перечисленных.

* URL-адрес для обновления должен быть в формате &lt;https или https&gt;://&lt;домен&gt;.com/&lt;путь к ресурсу&gt;. Путь к ресурсам указывать необязательно, но в данном примере он не используется.

Скрипт загрузки

```
Set URL_RegEx = '(https?):\/\/(([a-zA-Z0-9]+)\.([a-zA-Z0-9]*)\.??([a-zA-Z0-9]*))\/?((([a-zA-Z0-9]*)*)((\/?([a-zA-Z0-9]*)*))*)\/{0,1}([\.,;]+(?=\s))*?';

URLs:

Load
ReplaceRegExGroup(URLsList, '$(URL_RegEx)', 'replacement-server', 2,1) as ResourceURL_Updated;

Load * Inline `
URLsList
The resource is located at https://testserver.com/files. For more help, see: https://support.company.com.
The resource is located at https://testserver.com/files/worksheet. For more help, see: https://support.company.com.
The resource is located at https://testserver.com/files/book. For more help, see: https://support.company.com.
The resource is located at https://testserver.com/files/form. For more help, see: https://support.company.com.
The resource is located at https://testserver.com/datamodel. For more help, see: https://support.company.com.
The resource is located at https://testserver.com/resourcenew. For more help, see: https://support.company.com.
The resource is located at https://testserver.com/page. For more help, see: https://support.company.com.
The resource is located at https://testserver.com/page/overview. For more help, see: https://support.company.com.
` (delimiter is '\t');
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:

* `ResourceURL_Updated`

Результирующая таблица

| ResourceURL\_Updated |
| --- |
| The resource is located at https://replacement-server/datamodel. For more help, see: https://support.company.com. |
| The resource is located at https://replacement-server/files. For more help, see: https://support.company.com. |
| The resource is located at https://replacement-server/files/book. For more help, see: https://support.company.com. |
| The resource is located at https://replacement-server/files/form. For more help, see: https://support.company.com. |
| The resource is located at https://replacement-server/files/worksheet. For more help, see: https://support.company.com. |
| The resource is located at https://replacement-server/page. For more help, see: https://support.company.com. |
| The resource is located at https://replacement-server/page/overview. For more help, see: https://support.company.com. |
| The resource is located at https://replacement-server/resourcenew. For more help, see: https://support.company.com. |

## Пример 2: выражение диаграммы для обновления протокола в URL-адресах

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegExGroup.htm)

#### Выражение диаграммы и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Таблица `URLsList`, содержащая список входных строк, в которых требуется определить и обновить определенные URL-адреса. Требуется обновить протокол с http на https в ссылках на сайт поддержки.

Требования:

* Каждая строка ввода содержит два URL-адреса, причем ссылка на сайт поддержки отображается как второй URL-адрес. Требуется обновить только второй URL-адрес из перечисленных.

* URL-адрес для обновления должен быть в формате &lt;https или https&gt;://&lt;домен&gt;.com/&lt;путь к ресурсу&gt;. Путь к ресурсам указывать необязательно, но в данном примере он не используется.

Скрипт загрузки

```
URLs:

Load * Inline `
URLsList
The resource is located at https://testserver.com/files. For more help, see: http://support.company.com.
The resource is located at https://testserver.com/files/worksheet. For more help, see: http://support.company.com.
The resource is located at https://testserver.com/files/book. For more help, see: http://support.company.com.
The resource is located at https://testserver.com/files/form. For more help, see: http://support.company.com.
The resource is located at https://testserver.com/datamodel. For more help, see: http://support.company.com.
The resource is located at https://testserver.com/resourcenew. For more help, see: http://support.company.com.
The resource is located at https://testserver.com/page. For more help, see: http://support.company.com.
The resource is located at https://testserver.com/page/overview. For more help, see: http://support.company.com.
` (delimiter is '\t');
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:

* `URLsList`

Добавьте это вычисляемое измерение:

```
=ReplaceRegExGroup(URLsList, '(https?):\/\/(([a-zA-Z0-9]+)\.([a-zA-Z0-9]*)\.??([a-zA-Z0-9]*))\/?((([a-zA-Z0-9]*)*)((\/?([a-zA-Z0-9]*)*))*)\/{0,1}([\.,;]+(?=\s))*?', 'https', 1,2)
```

Результирующая таблица

| URLsList | =ReplaceRegExGroup(URLsList, '(https?):\/\/(([a-zA-Z0-9]+)\.([a-zA-Z0-9]\*)\.??([a-zA-Z0-9]\*))\/?((([a-zA-Z0-9]\*)\*)((\/?([a-zA-Z0-9]\*)\*))\*)\/{0,1}([\.,;]+(?=\s))\*?', 'https', 1,2) |
| --- | --- |
| The resource is located at https://testserver.com/files. For more help, see: http://support.company.com. | The resource is located at https://testserver.com/datamodel. For more help, see: https://support.company.com. |
| The resource is located at https://testserver.com/files/worksheet. For more help, see: http://support.company.com. | The resource is located at https://testserver.com/files. For more help, see: https://support.company.com. |
| The resource is located at https://testserver.com/files/book. For more help, see: http://support.company.com. | The resource is located at https://testserver.com/files/book. For more help, see: https://support.company.com. |
| The resource is located at https://testserver.com/files/form. For more help, see: http://support.company.com. | The resource is located at https://testserver.com/files/form. For more help, see: https://support.company.com. |
| The resource is located at https://testserver.com/datamodel. For more help, see: http://support.company.com. | The resource is located at https://testserver.com/files/worksheet. For more help, see: https://support.company.com. |
| The resource is located at https://testserver.com/resourcenew. For more help, see: http://support.company.com. | The resource is located at https://testserver.com/page. For more help, see: https://support.company.com. |
| The resource is located at https://testserver.com/page. For more help, see: http://support.company.com. | The resource is located at https://testserver.com/page/overview. For more help, see: https://support.company.com. |
| The resource is located at https://testserver.com/page/overview. For more help, see: http://support.company.com. | The resource is located at https://testserver.com/resourcenew. For more help, see: https://support.company.com. |

## Подробнее

* [Работа с регулярными выражениями в скриптах загрузки и выражениях диаграммы](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)