# Работа с базами

Когда софт обрабатывает различные списки (например список пользователей или чатов), то он оставляет напротив строчек специальные [метки](https://docs.teleraptor.ru/misc/spiski-i-metki). В этой статье мы рассмотрим различные манипуляции с базами, которые вы можете проделать самостоятельно: например, выделить всех пользователей, которых мы не смогли заинвайтить или которых не удалось найти в телеграме.

## Регулярные выражения

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

## Программы для работы

#### regex101.com

Самый простой вариант - это зайти на сайт [regex101.com](https://regex101.com) и вставить туда базу, с которой собираетесь работать:

<figure><img src="https://10302238-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MgC3cdC8ttJkmMsjHdr%2Fuploads%2FvcV2gkMhXCcCBffSXhaw%2Fimage.png?alt=media&#x26;token=c78c3fdb-4016-4b40-8151-f77a9acb4158" alt="" width="563"><figcaption></figcaption></figure>

Команду для поиска нужно будет вписывать в окошко сверху.

#### Другие программы

Для более удобной и продвинутой работы я рекомендую установить текстовый редактор с поддержкой **regex** себе на компьютер. Тогда вы сможете открывать файлы напрямую со своего компьютера и сразу сохранять нужный результат в другой файл. Например, подойдут редакторы [Sublime Text](https://www.sublimetext.com) или [Notepad++](https://notepad-plus-plus.org/downloads/).

## Пробуем!

Загрузите любую обработанную базу в ваш редактор и напишите такую команду для поиска:&#x20;

{% code fullWidth="false" %}

```
^\s*(\S+) Ok
```

{% endcode %}

Если у вас нет базы под рукой, а посмотреть хочется, то откройте [этот пример](https://regex101.com/r/fA7RKr/1).

Вы увидите, что редактор выделил все строчки с меткой **Ok:**

<figure><img src="https://10302238-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MgC3cdC8ttJkmMsjHdr%2Fuploads%2FEN2ShfHSUBLbRKt1PMtN%2Fimage.png?alt=media&#x26;token=b3816ae9-6c8e-4080-a1d6-53a7b1343110" alt="" width="563"><figcaption><p>Скриншот с сайта regex101.com</p></figcaption></figure>

Таким же способом можно выделять строчки по любым правилам! Ниже мы рассмотрим несколько примеров, но ваши возможности безграничны.

## Выгружаем выделенные строчки

Есил вы пользуетесь редактором, установленным на компьютер, то можете легко выделить все найденные строчки и скопировать их в другой файл.

Если вы используете сайт regex101.com, то после выделения нужны строчек вам нужно нажать сюда:

<figure><img src="https://10302238-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MgC3cdC8ttJkmMsjHdr%2Fuploads%2FZV7axXx7uBLQEqivaCIb%2Fimage.png?alt=media&#x26;token=7678b190-9c0f-4183-8e47-270705d92485" alt="" width="563"><figcaption></figcaption></figure>

Затем выбрать формат "Простой текст" и нажать кнопку для копирования результата:

<figure><img src="https://10302238-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MgC3cdC8ttJkmMsjHdr%2Fuploads%2FkCy9vZWTfRHdPy2wYZ8w%2Fimage.png?alt=media&#x26;token=6061dc7c-b71f-4e25-a3a5-d12c82f1db31" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
Чтобы выгружать строчки без меток, при экспорте результатов снимите галочку внизу окна:

<img src="https://10302238-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MgC3cdC8ttJkmMsjHdr%2Fuploads%2FuDFDfE7ptoyOxZNNsGxo%2Fimage.png?alt=media&#x26;token=cd434fff-e4a9-470f-9f16-ccaf0ab1d1b9" alt="" data-size="original">
{% endhint %}

## Пользователи, которых не удалось заинвайтить

Если кого-то из вашей базы не удалось заинвайтить, то можно отправить им оффер в ЛС через модуль [спамера](https://docs.teleraptor.ru/modules/private-messages-spam/regular-mode). Чтобы выделить всех пользователей, которых не получилось заинвайтить, воспользуйтесь такой командой:

```
^\s*(\S+) CannotInvite
```

## Необработанные строчки

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

```
^\s*\S+\s*$
```

## Не найденные пользователи

А вот команда для выделения всех пользователей, которых софт найти не смог (это может случиться если пользователь сменил юзернейм, его забанили, указанный номер телефона не найден в телеграме и т.д.):

```
^\s*(\S+) NotFound
```

## Строчки с различными метками

Если вас интересуют какие-то другие метки, то вы можете составить команду для поиска самостоятельно.&#x20;

Вот шаблон для выделения всех строчек с определённой меткой:

```
^\s*(\S+) МЕТКА
```

Если меток несколько, то можно перечислить их через символ `|`

```
^\s*(\S+) МЕТКА1|МЕТКА2|МЕТКА3
```
