О регулярных выражениях

04 августа 2026

ID 171632

В этом разделе описываются регулярные выражения и приводятся сведения об их использовании.

О регулярных выражениях

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

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

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

Рекомендуется задать регулярные выражения для извлечения данных, таких как IP-адрес и порт источника событий, а также цели события, имени пользователя и даты. Эти регулярные выражения задают формат исходящих оповещений.

Об именах регулярных выражений

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

  • SourceId
  • MatchedIndicator
  • RecordContext
  • Category
  • ActionableFields
  • Confidence
  • IndicatorInfo
  • EventReceivedDate
  • Ретроскан

Составные значения

Атрибут concatenate используется для определения правила, используемого для формирования составного значения из данных, извлеченных из события. Правило оперирует группами извлеченных данных посредством символов #N, где N — номер группы (начиная с 1). Если перед символом решетки (#) стоит обратная косая черта (\), то символ решетки рассматривается не как часть номера группы, а как собственно символ решетки.

Рассмотрим парсинг на примере следующего события:

url_1=http://domain test_event url_2=/page/mypage test

Используемые регулярные выражения и соответствующие результаты парсинга примера события представлены в таблице ниже.

Примеры применения регулярных выражений

Если правило конкатенации не задано или атрибут concatenate имеет пустое значение, а в регулярном выражении более одной группы, конкатенация значений групп выполняется в том порядке, в котором они входят в регулярное выражении.

Если в атрибуте concatenate больше групп, чем в регулярном выражении, дополнительные группы будут игнорируются и заменяются соответствующим текстом #N.

Несколько совпадений

При парсинге события с помощью регулярного выражения можно извлечь все значения, совпавшие с регулярным выражением. Для этого установите для атрибута extract значение "all". Если установлено значение "first" или атрибут не указан, извлекается только первое значение, совпавшее с регулярным выражением.

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

Указание символов по их шестнадцатеричному коду

Kaspersky CyberTrace Service использует регулярные выражения, соответствующие синтаксису PCRE. Этот синтаксис позволяет указывать символ по его коду несколькими способами.

Kaspersky CyberTrace Service не поддерживает указание символов в формате \x{hhh..}. Вместо этого укажите символ по его коду следующим образом: \uhhhh, где hhhh – шестнадцатеричный код символа. Например, вместо выражения ([\x{00a1}-\x{ffff}]) можно использовать выражение ([\u00a1-\uffff]).

Оптимизация регулярных выражений

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

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

  • Используйте сверхжадные квантификаторы (++, *+).
  • Если возможно, используйте группу без сопоставления (?:) с внешними скобками.
  • Старайтесь как можно реже использовать оператор альтернативы и находить совпадения в конце строки. Оператор альтернативы имеет самый низкий приоритет среди всех операторов регулярных выражений.
  • Используйте символы начала и конца строки (^, $).
  • Используйте атомарные группы. Атомарные группы автоматически отбрасывают все позиции возврата, запомненные любыми токенами внутри данной группы. Используется синтаксис (?> ...).
  • В длинных регулярных выражениях старайтесь избегать экспоненциального роста возвратов. Не рекомендуется использовать конструкции вроде (qwerty.*)*

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!