К1. Опции регулярных выражений PCRE

Регулярные выражения применяются как в конфигурационном файле Сервера Dr.Web, так и в Центре управления при задании исключаемых из сканирования объектов в настройках Сканера Dr.Web.

Регулярные выражения записываются в следующей форме:

qr{EXP}options

где EXP — собственно выражение, options — последовательность опций (строка букв), qr{} — литеральные метасимволы. В целом конструкция выглядит, например, так:

qr{pagefile\.sys}i — файл подкачки ОС Windows NT

Ниже приведено описание опций и собственно регулярных выражений. Более полное описание см. на http://www.pcre.org/pcre.txt.

Опция 'a', соответствующая PCRE_ANCHORED

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

Опция 'i', соответствующая PCRE_CASELESS

С этой настройкой буквы в шаблоне сопоставляются как с заглавными, так и со строчными буквами. Данная возможность может быть изменена в шаблоне настройкой опции (?i).

Опция 'x', соответствующая PCRE_EXTENDED

С этой настройкой пробелы между символами в шаблоне игнорируются, за исключением случаев, когда они предваряются управляющими символами или находятся внутри класса символов. Пробел не включает символ VT (код 11). Кроме того, символы, находящиеся вне класса символов между символом #, не предваренным управляющим символом, и символом новой строки включительно, также игнорируются. Данную опцию можно изменить в шаблоне настройкой опции (?x). Эта настройка дает возможность включать комментарии внутрь сложных шаблонов. Следует обратить внимание, что это применимо только к символам данных. Символы пробела не могут находиться в шаблоне внутри последовательностей специальных символов, например, внутри последовательности (?(, которая вводит условный подшаблон.

Опция 'm', соответствующая PCRE_MULTILINE

По умолчанию, PCRE считает, что строка темы состоит из единственной строки с символами (даже если она на самом деле содержит символы перевода строк). Метасимвол "начала строки" "^" сопоставляется только в начале строки, в то время как метасимвол "конец строки" "$" сопоставляется только в конце строки или перед заключительным переводом строки (если не установлена опция PCRE_DOLLAR_ENDONLY).

Если установлена опция PCRE_MULTILINE, метасимволы "начало строки" и "конец строки" привязываются к следующим сразу за ними или перед ними любым переводам строки в строке темы, а также в самом начале и конце строки. Данную опцию можно изменить в шаблоне настройкой опции (?m). Если в тексте нет символов "\n" или если в шаблоне не встречается ^ или $, опция PCRE_MULTILINE не имеет смысла.

Опция 'u', соответствующая PCRE_UNGREEDY

Эта опция отменяет "жадность" квантификаторов, так что они становятся "нежадными" по умолчанию, но восстанавливают "жадность", если за ними следует "?". Это также можно настроить опцией (?U) в шаблоне.

Опция 'd', соответствующая PCRE_DOTALL

С этой настройкой метасимвол точки в шаблоне сопоставляется со всеми символами, включая символ новой строки. Без него символы новой строки исключаются. Эту опцию можно изменить в шаблоне установкой новой опции (?s). Отрицательный класс, например, [^a], всегда сопоставляется с символом новой строки, независимо от установок этой опции.

Опция 'e', соответствующая PCRE_DOLLAR_ENDONLY

С этой настройкой символ доллара в шаблоне сопоставляется только в конце строки темы. Без этой опции доллар также со­поставляется в положении непосредственно перед символом перевода строки в конце строки (но не перед любыми другими символами новой строки). Опция PCRE_DOLLAR_ENDONLY игнорируется, если установлена опция PCRE_MULTILINE.